javascript - 让 jQuery 在 Jetpack 中工作

标签 javascript jquery firefox-addon firefox-addon-sdk

我正在试验 Jetpack,我想在给定的 html 页面中解析所有年份,然后用指向 Wiki 页面的链接包装年份。我在 jquery 中尝试了代码并且它在那里工作但现在我在 Jetpack 中使用它并且它给出了错误 $(doc).replace is not a function。我绝对是 Jquery/Jetpack 的新手,所以也许我错过了一些非常简单的东西,但非常感谢您的帮助。

编辑:我已经尝试了这些建议,但我仍然卡住了。奇怪的是,这个

JQuery 函数有效:

(function($) {
    $.fn.clickUrl = function() {  
            var regexp = /([1-2][0-9][0-9][0-9])/gi;
            this.each(function() {
            $(this).html(
                  $(this).html().replace(regexp,'<ahref=\"http://nl.wikipedia.org/wiki/$1\">$1<\/a>')
            );
        });
    return $(this);
    }
})(jQuery);

基本上,我想将此功能“移植”到 Jetpack。

这是我的 JQuery 函数到 Jetpack 的“旧”非工作端口:

jetpack.statusBar.append({  
    html: "Hyperlink Years",  
    width: 80,  
    onReady: function(widget){  
        $(widget).click(function(){  
        var regexp = /([1-2][0-9][0-9][0-9])/gi;
        var doc = jetpack.tabs.focused.contentDocument;
            $(doc).each(function() {
            $(this).html(
                    $(doc).replace(regexp,'<a href=\"http://nl.wikipedia.org/wiki/$1\">$1<\/a>'));
            });
       return $(doc); 
     });  
   }  

});

最佳答案

我不熟悉 jetpack,但你的 jquery 似乎很乱。

如果“doc”是一个 HTML 文档,那么 $(doc).each() 就没有意义。它只会循环一次,并且“this”与 doc 相同。

然后您将执行 $(doc).replace(regexp, ...),但 replace() 不是 jquery 函数。你可能想做 .html().replace(regexp, ...);但是,我不建议这样做,因为它不起作用 - 您最终只会替换文档中的任何数字,即使它们是另一个 URL 或页面 HTML 的一部分。

更多信息,请引用这个问题或google for jquery text nodes: Find text string using jQuery?

关于javascript - 让 jQuery 在 Jetpack 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/932518/

相关文章:

jquery - 隐藏加载大量 JQuery 时在页面开始时发生的闪烁和其他脏效果

jQuery:使用remove();对于按 <label> 或 #id 名称的 <tr> 行

jquery - HTML 属性可以有撇号吗

Javascript firefox 扩展以获取链接周围的文本

javascript - 页面在 chrome 和 FF 中不重定向,但在 IE 中重定向

javascript - 为什么我的点击功能不起作用

javascript - 这个 JSON 字符串有什么问题?

javascript - jointjs:svg 文本在落到纸上时被空白替换

java - Jersey UniformInterfaceException 试图代理到 REST POST 服务

用于测试的 HTTP Post Multipart 工具