繁体   English   中英

如何在 Firefox 插件上使用 jQuery 1.5.2+?

[英]How can I use jQuery 1.5.2+ on a Firefox addon?

起初我做了一个 function 接收参数并返回 jQuery 如:

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

但是后来我从审查中得到了 email,他们告诉我我必须使用带有原始文件名且完全未修改的 jQuery 文件。

我开始寻找替代方案并找到了这个解决方案,但它无法正常工作。

jQuery object 已创建,但我找不到任何元素。 $("#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 使用原始 jQuery 文件修改页面(HTML)上的内容,甚至可能吗?

You need pass the e.originalTarget.defaultView on the second parameter on jquery.. If you don't jquery will use window.document, which is the window.document from the xul.

利用

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,避免 memory 泄漏。

加载它的首选方法是使用mozIJSSubScriptLoader ,这样您就不会与其他扩展发生冲突。 我不确定您为什么会遇到问题,我可以在我的插件中使用 jQuery ,例如$("#id").hide() ,无需额外代码(尽管来自侧边栏,现在是 browser.xul)。

无论哪种方式, 这篇博文都提供了一个很好的指南,甚至还有一个示例 xpi 可供下载。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM