簡體   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