4

FirefoxアドオンにjQueryをロードしました。これにより、XULを使用してロードされますwindow

window正しいオブジェクトを使用するように、デフォルトのコンテキストを変更したいと思います。

私がいつも目にする典型的な例は次のとおりです。

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

しかし、それを行うと、、、などの多くの関数が強制終了され.ajaxます.browser...これらのメソッドが必要です。

AMOjQueryでは、正しいwindowオブジェクトを送信するためのラッパーを作成できません。

したがって、私の唯一のオプションは、ソースコードを変更せずにjQueryのデフォルトコンテキストを変更することです。

どのようなオプションがありますか?

4

2 に答える 2

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);
};

このように動作します。

于 2013-12-12T18:55:24.527 に答える
0

このラッパーを使用してデフォルトのコンテキストを変更します。

jQuery.fn.init2 = jQuery.fn.init;

jQuery.prototype.init = function (selection, context, root) {
    return new jQuery.fn.init2(selection, context, jQuery.context || root);
}

$(document).ready(function () {
    jQuery.context = $(newContextSelector);
    $("*").css("color", "red");
});

jqueryオブジェクトであるコンテキストを見てください。

于 2020-02-05T18:43:49.003 に答える