Bru*_*oLM 5 javascript firefox jquery firefox-addon
起初我创建了一个接收参数并返回jQuery的函数,例如:
function getjQuery(window)
{
/*jquery code*/(window);
return window.jQuery;
}
Run Code Online (Sandbox Code Playgroud)
但后来我在评论中收到了一封电子邮件,他们告诉我,我必须使用原始文件名的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.$;
Run Code Online (Sandbox Code Playgroud)
jQuery文件加载在我的browser.xul叠加层上:
<script type="text/javascript" src="chrome://addon/content/bin/jquery-1.5.2.min.js" />
Run Code Online (Sandbox Code Playgroud)
我在正确的地方装货吗?
如何使用jQuery使用原始jQuery文件修改页面上的内容(HTML),甚至可能吗?
小智 3
你需要在jquery的第二个参数上传递e.originalTarget.defaultView。如果你不这样做,jquery将使用window.document,这是来自xul的window.document。
使用
gBrowser.addEventListener("DOMContentLoaded", function (e) {
$("#id", e.originalTarget.defaultView).length
}, true);
Run Code Online (Sandbox Code Playgroud)
代替
$("#id").length;
Run Code Online (Sandbox Code Playgroud)
并且,为了避免与其他扩展发生冲突,请不要在 xul 页面中使用脚本,请使用 MozIJSSubScriptLoader。
Components.classes["@mozilla.org/moz/jssubscript-loader;1"]
.getService(Components.interfaces.mozIJSSubScriptLoader)
.loadSubScript("chrome://youraddon/content/jquery-1.5.2.min.js");
Run Code Online (Sandbox Code Playgroud)
如果使用此方法,则仅在需要时加载 jquery,避免内存泄漏。
| 归档时间: |
|
| 查看次数: |
789 次 |
| 最近记录: |