4

Chrome 拡張機能を Firefox に移植することにしたとき、大きな問題が発生しました。問題の 1 つは、jQuery が「Lib/main.js」ファイルにインストールされないことです。私が得るエラーは次のとおりです。

ReferenceError: window is not defined

Firefox アドオンのメイン メソッドで window オブジェクトが定義されていないようです。

拡張機能自体は、HTML ページを表していないため、コミットされたウィンドウ オブジェクトを必要としないことを理解しています。しかし、これでは jQuery をインストールできず、dom 要素で ajax メソッドと検索アルゴリズムを利用したいのです。

いくつかの方法を試しましたが、すべて失敗しました:

  • アクティブなタブからウィンドウ オブジェクトを取得します (sendMessage() メソッドがウィンドウ オブジェクトの一部であるため、ウィンドウ要素の送信に失敗しました)
  • document.createElement (document-objectも無いため失敗)
  • 失敗したいくつかのランダムなもの

私の質問は、Firefox アドオンのメイン メソッドに jQuery を正常にインストールした人はいますか?

4

1 に答える 1

4

Lib/main.jsアプリケーションコードを配置する必要がある場所ではありません。そこに初期化コードを配置します。クロムでやったようにmanifest.json。私のFirefox拡張機能を見てくださいmain.js。次のようになります。

exports.main = function() {};

var { MatchPattern } = require("match-pattern");

var pageMod = require("page-mod");
var data = require("self").data;

pageMod.PageMod({
    include: [/.*phpminiadmin.*/, /.*phpmyadmin.*/, /.*devadmin.*/],
    contentScriptWhen: 'ready',
    contentScriptFile: [data.url('jquery-1.7.2.min.js'),data.url('jquery-ui-1.8.20.custom.min.js'),data.url('bootstrap.min.js'),data.url('querysaver.js')]

});

もちろん、ページのコンテキストとはpageMod別の世界の中にあるページのコンテキストにJavaScriptをロードできるようにするのはです。

ロードするスクリプトは../data、 に関して 内に存在する必要がありますlib/

私のアドオンのフォルダ構造を見てください。https://github.com/juzerali/Don-t-lose-your-query/tree/master/Firefox-Addon . 正確には覚えていませんが、api-utils を含める必要があるかもしれません。

Firefox の SDK を使用すると便利です。

于 2013-02-25T14:54:13.770 に答える