繁体   English   中英

使用jQuery将Chrome扩展程序移植到Firefox SDK插件

[英]Porting Chrome extension using jQuery to Firefox SDK Add-on

我的Chrome扩展程序在后台页面中使用jQuery,用于jQuery.extend()jQuery.ajax()jQuery.deferred() (不是DOM操作的东西,在后台页面中没有意义) 。

将此代码迁移到Firefox SDK插件中 ,没有后台window对象(jQuery需要使用该window对象),因此类似

var $ = require('../3rdparty/jquery.min')(window);

这就是jQuery在类似CommonJS的环境中的工作方式,但由于jQuery本身抛出jQuery requires a window with a document异常jQuery requires a window with a document ,因此失败。

有什么方法可以在基于Firefox SDK的附加组件中使用jQuery? Page Workers看起来很有前途,但是我无法掌握底层的window对象。

安迪

这有效:

    var {Cc, Ci} = require("chrome");
    _window = Cc["@mozilla.org/appshell/appShellService;1"]
        .getService(Ci.nsIAppShellService).‌​hiddenDOMWindow;

    $ = require('../3rdparty/jquery')(_window);

但是,我不得不修补jQuery(2.1.3)本身,将3441行更改为

    window.setTimeout( jQuery.ready );

我有理由相信这是一个jQuery错误。

谢谢安迪! 好像工作得很漂亮!

当我得知您必须对jQuery进行一些修改时,我开始提交修复程序,但事实证明有人已经这样做了!

https://github.com/jquery/jquery/commit/842958e7aecd0d75a7ee9e2aaec83457701aa2f3

它已经在jQuery 3.0.0-alpha1中发布了。

暂无
暂无

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

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