如何在Firefox扩展中使用jQuery [英] How to use jQuery in Firefox Extension

查看:102
本文介绍了如何在Firefox扩展中使用jQuery的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

 <$ c $我想在firefox扩展中使用jQuery,
我在xul文件中导入了这样的库: c>< script type =application / x-javascriptsrc =chrome://myExtension/content/jquery.js> < /脚本>

但是在xul文件中无法识别$()函数,jQuery() / p>

我搜索了这个问题,发现了一些解决方案,但没有人和我合作:
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

 <?xml version =1.0?> 
< overlay id =examplexmlns =http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul>
< head>< / head>
< script type =application / x-javascriptsrc =jquery.js>< / script>
< script type =application / x-javascriptsrc =example.js>< / script>
< / overlay>

这里是 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){
//检查网站
if(!doc.location.href.match(/ ^ http:\ / \ / * \。)?stackoverflow\.com(\ /.*)?$/ i))
return;

//检查是否已经加载
if( doc.getElementById(plugin-example))return;

//安装
this.win = aEvent.target.defaultView.wrappedJSObject;
this.doc = doc;

// Hello World
this.main = main = $('< ; div id =plugin-example>')。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< b>'+ $ .fn.jquery +'< / b>');
};

//绑定插件
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);

})();


I want to use jQuery inside a firefox extension, I imported the library in the xul file like this:

<script type="application/x-javascript" src="chrome://myExtension/content/jquery.js"> </script>

but the $() function is not recognized in the xul file neither do the jQuery().

I googled about the problem and found some solutions but no one did work with me: http://gluei.com/blog/view/using-jquery-inside-your-firefox-extension http://forums.mozillazine.org/viewtopic.php?f=19&t=989465

I've also tried to pass the 'content.document' object(which refrences the 'document' object) as the context parameter to the jQuery function like this:

$('img',content.document);

but still not working, does any one came across this problem before?

解决方案

I use the following example.xul:

<?xml version="1.0"?>
<overlay id="example" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<head></head>
<script type="application/x-javascript" src="jquery.js"></script>
<script type="application/x-javascript" src="example.js"></script>
</overlay>

And here is an 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 = $('<div id="plugin-example">').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 <b>' + $.fn.jquery + '</b>');
    };

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

})();

这篇关于如何在Firefox扩展中使用jQuery的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆