我想在firefox扩展中使用jQuery,我在xul文件中导入了这样的库:
但是在xul文件中无法识别$()函数,jQuery()也没有.
我搜索了这个问题并找到了一些解决方案,但没有人与我合作:http : //gluei.com/blog/view/using-jquery-inside-your-firefox-extension http://forums.mozillazine.org/ viewtopic.php?F = 19&T = 989465
我也尝试将'content.document'对象(它引用'document'对象)作为上下文参数传递给jQuery函数,如下所示:
$('img',content.document);
但仍然没有工作,有没有人遇到过这个问题?
我使用以下内容example.xul
:
这是一个 example.js
(function() { jQuery.noConflict(); $ = function(selector,context) { return new jQuery.fn.init(selector,context||example.doc); }; $.fn = $.prototype = jQuery.fn; example = new function(){}; example.log = function() { Firebug.Console.logFormatted(arguments,null,"log"); }; example.run = function(doc,aEvent) { // Check for website if (!doc.location.href.match(/^http:\/\/(.*\.)?stackoverflow\.com(\/.*)?$/i)) return; // Check if already loaded if (doc.getElementById("plugin-example")) return; // Setup this.win = aEvent.target.defaultView.wrappedJSObject; this.doc = doc; // Hello World this.main = main = $('').appendTo(doc.body).html('Example Loaded!'); main.css({ background:'#FFF',color:'#000',position:'absolute',top:0,left:0,padding:8 }); main.html(main.html() + ' - jQuery ' + $.fn.jquery + ''); }; // Bind Plugin var delay = function(aEvent) { var doc = aEvent.originalTarget; setTimeout(function() { example.run(doc,aEvent); }, 1); }; var load = function() { gBrowser.addEventListener("DOMContentLoaded", delay, true); }; window.addEventListener("pageshow", load, false); })();
这种方法是绝对不合适的,因为当您从溢出加载jquery时,然后为整个窗口定义了2个对象jQuery和$,并可能导致与其他扩展冲突.虽然您可以使用jquery.noconflict和函数作用域来隐藏它,但可以异步加载叠加层.在我可以使用jquery.noconflict之前,还有可能已经定义了另一个firefox的扩展并在窗口上使用了jQuery和$
2> David..:以下解决方案使得在contentScriptFile中使用jQuery成为可能(Targetting 1.5 Addon-sdk)
在你的main.js中:
exports.main = function() { var pageMod = require("page-mod"); pageMod.PageMod({ include: "*", contentScriptWhen: 'end', contentScriptFile: [data.url("jquery-1.7.1-min.js") , data.url("notifier.js") , data.url("message.js")], onAttach: function onAttach(worker) { //show the message worker.postMessage("Hello World"); } }); };在你的message.js中:
self.on("message", function(message){ if(message !== "undefined"){ Notifier.info(message); } });您需要注意的一些陷阱:
contentScriptFile数组的顺序.如果首先放置message.js:jQuery将不会被重新调整.
不要在data.url中放置http:// url (这不起作用)!
您的所有javascript文件都应该在数据文件夹中.(只有main.js应该在lib文件夹中)
推荐阅读
如何解决《IOS发布图像-让我发疯》经验,为你挑选了5个好方法。 ... [详细] 如何解决《iOS,ld:框架找不到架构arm64的GoogleMaps》经验,为你挑选了0个好方法。 ... [详细] 如何解决《Swift数组和字典性能,removeAll()vs新实例》经验,为你挑选了1个好方法。 ... [详细] 如何解决《GDB进入断点时抛出错误》经验,为你挑选了1个好方法。 ... [详细] 如何解决《在模拟方法(Moq)中更改参考参数的值》经验,为你挑选了1个好方法。 ... [详细] 如何解决《Ionic:模拟器:错误:这个AVD的配置缺少一个内核文件!模拟器:错误:ANDROID_SDK_ROOT未定义》经验,为你挑选了1个好方法。 ... [详细] 如何解决《KotlinflatMap-地图》经验,为你挑选了0个好方法。 ... [详细] 如何解决《PhoenixEcto如何处理NoResultsError》经验,为你挑选了1个好方法。 ... [详细] 如何解决《删除列表中第一项的函数(Python)》经验,为你挑选了1个好方法。 ... [详细] 如何解决《凤凰在哪里defimplPlug.Exception》经验,为你挑选了1个好方法。 ... [详细] 如何解决《numpy轮廓:TypeError:输入z必须是2D数组》经验,为你挑选了1个好方法。 ... [详细] 如何解决《使用Jest测试ReactcomponentWillUnmount》经验,为你挑选了3个好方法。 ... [详细] 如何解决《如何使用Jasmine监视通过ES6默认导出导入的函数?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《如何在Windows上安装igraphforpython》经验,为你挑选了1个好方法。 ... [详细] 如何解决《试图将R中的岩石,纸张,剪刀游戏随机化》经验,为你挑选了3个好方法。 ... [详细] 如何解决《Ramda.js:要列出的参数》经验,为你挑选了1个好方法。 ... [详细] 如何解决《防止在OSX中启动时出现iCloud打开文件对话框》经验,为你挑选了0个好方法。 ... [详细] 如何解决《在Swift中使用Map来更改自定义结构属性》经验,为你挑选了2个好方法。 ... [详细] 如何解决《如何从npm运行的bash脚本中打印$2BEFORE?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《Kuberneteskubelet原木在哪里?》经验,为你挑选了2个好方法。 ... [详细]吐了个 "CAO" !Tags | 热门标签RankList | 热门文章
- 1Guava是否提供了一种解除字符串的方法?
- 2在列表和数组中按索引获取struct项
- 3如何清除TextBox以使默认的Undo方法仍然起作用?
- 4jQuery自动完成悬停样式
- 5如何将相机聚焦在Windows Universal Apps中?
- 6Javascript中的2D数组
- 7EC2实例可以拒绝自动终止吗?
- 8ServerSocket无法从客户端读取输入
- 9添加一个int变量时生成不同的IL
- 10IE11浏览器中的<input type ="file">定位问题
- 11百胜尝试在CentOS 6上安装.el7版本
- 12使用C#中的32feet.net库从Windows发送bMessage到消息访问服务器
- 13为什么定义常量表达式的规则必须如此混乱?
- 14单击按钮时如何更改背景颜色
- 15确定我们是否在IPython笔记本会话中
- 16使用contenteditable div获取并设置光标位置
- 17将任意类的列转换为另一个data.table中的匹配列的类
- 18如何避免Flask-Admin 2.1警告"UserWarning:规则集中缺少字段"?
- 19如何从逻辑上解释二进制搜索的任何变体
- 20如何将标题行添加到pandas DataFrame中
DevBox开发工具箱 | 专业的在线开发工具网站 京公网安备 11010802040832号 | 京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有