2012-04-03 76 views
2

我在Firefox插件上加载了jQuery,这会导致它使用XUL的window加载。如何更改jQuery的默认上下文?

我想更改默认上下文,以便它将使用正确的window对象。

典型的例子,我总是看到的是:

var $ = function(selector,context){ 
    return new jQuery.fn.init(selector,context|| correctWindow); 
}; 
$.fn = $.prototype = jQuery.fn; 

但这样做我杀了很多功能,如.ajax.browser,...我需要这些方法。

AMO不会让我创建一个包装到jQuery发送正确的window对象。

所以我唯一的选择是以某种方式更改jQuery的默认上下文而不更改其源代码。

我有什么选择?

+0

[覆盖默认jQuery选择方面(http://stackoverflow.com/questions/3690447/override-default-jquery-selector-context) – BrunoLM 2012-04-03 23:09:04

+0

以前的答案,应该帮助的可能重复的.com /一个/437226分之3690529 – ramblinjan 2012-04-03 23:05:21

回答

1

在第一内容脚本我加

var loader = Components 
    .classes["@mozilla.org/moz/jssubscript-loader;1"] 
    .getService(Components.interfaces.mozIJSSubScriptLoader); 

loader.loadSubScript("chrome://extensions/js/jquery-1.7.2.min.js"); 

var initjQuery = jQuery.fn.init; 
$.fn.init = function(s,c,r) { 
    c = c || window.document; 
    return new initjQuery(s,c,r); 
}; 

这样,它的工作原理。
HTTP://计算器