2009-02-10 138 views
6

我在我的Firefox扩展中使用jquery-1.2.6,它工作得很好。几天前我想更新到当前版本的jquery(1.31),但这似乎不再适用。这是我的技术,包括在我的jQuery的扩展:Firefox扩展jquery 1.3+

$mb = jQuery.noConflict(); 
var doc = window.content.document 
$mb("body", doc).slideToggle("slow"); 

我知道在this页中描述的技术,但这并不工作。 那么这里有没有人在Fi​​refox扩展中使用比jquery-1.2.6更新的版本,并告诉我如何?

+1

请仔细阅读有关在安全的情况下使用jQuery内部firefox扩展而不与其他插件冲突的详细信息:http://meherranjan.com/blog/a-guide-to-using-jquery-inside-firefox-extension/ – 2010-11-03 19:53:29

回答

5

我发现了我的问题的解决方案!

我会在这里介绍它,以便其他人可以使用它作为参考。经过大量的搜索和撕裂我的头发后,我发现了this关于jquery bug跟踪器的bug报告。你可以在那里下载jquery 1.3.1 Revision: 6161修复问题(官方1.3.1版本是修订版:6158)。

另一个很棒的技巧就是在firefox扩展中包含类似jquery的“on the fly”。只需提供您的扩展中一些JavaScript文件中的以下内容:

var jsLoader = Components.classes["@mozilla.org/moz/jssubscript-loader;1"].getService(Components.interfaces.mozIJSSubScriptLoader); 
jsLoader.loadSubScript("chrome://{appname}/content/jquery-1.3.1_6161.js"); 
jQuery.noConflict(); 

//use jquery 
var doc = window.content.document; 
alert(jQuery("body", doc).html()); 

更新:今天的版本1.3.2被释放,这个问题似乎解决了!

1

window.content.document之后我没有看到分号,我认为这是必要的。

+0

不,jquery即使使用分号,-1.3+也不起作用。正如我所说,它使用jquery-1.2.6(即使没有任何分号)也能完美工作。还有一个问题...... – bizzy 2009-02-12 00:24:07