Как я могу использовать jQuery 1.5.2+ на аддоне Firefox? - PullRequest
5 голосов
/ 03 мая 2011

Сначала я создал функцию, которая получила параметр и возвратил jQuery, например:

function getjQuery(window)
{
   /*jquery code*/(window);
   return window.jQuery;
}

Но потом я получил сообщение электронной почты из обзора, и мне сказали, что я должен использовать файл jQuery с оригинальнымимя файла и полностью не изменено.

Я начал искать альтернативу и нашел это решение , но он никак не работает.

Объект jQuery создан, ноЯ не могу найти какие-либо элементы.$("#id").length всегда 0.С помощью предыдущего метода он всегда был найден.

Мой текущий код (который не работает)

AddonNameSpace.jQueryAux = jQuery;

AddonNameSpace.$ = function(selector,context) { 
    return                                                 // correct window
        new AddonNameSpace.jQueryAux.fn.init(selector,context||contentWindow); 
};
AddonNameSpace.$.fn =
    AddonNameSpace.$.prototype = AddonNameSpace.jQueryAux.fn;
AddonNameSpace.jQuery = AddonNameSpace.$;

Файл jQuery загружается на моем оверлее browser.xul:

<script type="text/javascript" src="chrome://addon/content/bin/jquery-1.5.2.min.js" />

Загружаю ли я в нужном месте?

Как я могу использовать jQuery для изменения содержимого страницы (HTML) с помощью исходного файла jQuery, возможно ли это?

Ответы [ 2 ]

3 голосов
/ 03 мая 2011

Вам необходимо передать e.originalTarget.defaultView во второй параметр в jquery. Если вы этого не сделаете, jquery будет использовать window.document, который является window.document из xul.

Use

gBrowser.addEventListener("DOMContentLoaded", function (e) {
    $("#id", e.originalTarget.defaultView).length
}, true);

вместо

$("#id").length;

И, чтобы избежать конфликтов с другими расширениями, не используйте скрипт на странице xul, используйте MozIJSSubScriptLoader.

Components.classes["@mozilla.org/moz/jssubscript-loader;1"]
.getService(Components.interfaces.mozIJSSubScriptLoader)
.loadSubScript("chrome://youraddon/content/jquery-1.5.2.min.js"); 

ЕслиВы используете этот метод, вы загружаете JQuery только тогда, когда вам нужно, избегая утечки памяти.

2 голосов
/ 03 мая 2011

Предпочтительный способ загрузить его - mozIJSSubScriptLoader , чтобы вы не сталкивались с другими расширениями. Я не уверен, почему у вас проблемы, я могу использовать jQuery в моем аддоне, например $("#id").hide() без дополнительного кода (хотя из боковой панели, теперь browser.xul).

В любом случае, это сообщение в блоге содержит довольно хорошее руководство и даже содержит пример xpi для загрузки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...