0

WebExtensions を使用して最初の Firefox アドオンを作成しようとしています (最初の拡張機能は非常に複雑です)。セッション内のすべての Google 検索の結果を処理する必要があります (セッション = 同じ Google ページを使用したクエリ)。次のコードがあります。

マニフェスト.json:

{
  "manifest_version": 2,
  "name": "MyAddon",
  "version": "0.0.1",

  "description": "My Add-on",
  "icons": {
      "48": "icons/icon-48.png"
  },

  "applications": {
      "gecko": {
          "id": "myaddon@local",
          "strict_min_version": "42.0"
      }
  },

  "content_scripts": [
    {
      "matches": ["*://www.google.com/*"],
      "js": ["index.js"]
    }
  ]
}

index.js:

var pageUrl = window.location.href;

var req = new XMLHttpRequest();
req.open("GET", pageUrl, true);
req.onreadystatechange = function() {
    if(req.readyState == 4 && req.status == 200) {
        handleResponse(req.responseText);
    };
};
req.send();

function handleResponse(pageContent) {
    // Do some processing ...
}

最初の検索 (アドレス バーを使用) に必要なことを正確に実行します。ただし、アドオンは、Google ページに初めてアクセスしたときに読み込まれ、必要な処理を行った後、停止します。ページを更新するか、アドレスバーから別のクエリを作成したときにのみリロードされます。

検索フィールドを使用して別の検索を行い、もう一度処理を行うときにアドオンを再読み込みする方法を見つける必要がありますが、以前の検索の作業を失うことはありません。Cookie を使用する必要があると思いますが、まだ使用していません。

req.addEventListener("load", someFunction)/besides の代わりに使用しようとしましreq.onreadystatechange()たが、問題は解決しませんでした。何か案は?

ありがとうございました!

4

1 に答える 1

0

最初の質問については、データの保存に関して、いつでもストレージを使用してそのデータを保存するか、バックグラウンド ページと通信してそこにデータを保存することができます (ブラウザの再起動後に必要な場合を除き、ストレージを使用する必要があります)。 )。

ページの「読み込み」に関する問題は、ページがまったく読み込まれていないことです。ページ自体はブラウザに読み込まれ、ready-state移動するまでそのままです(あなたが言及したものは変更されません)。本当に変わるのは、ページのコンテンツだけです。Google 検索ボタンのonClickリスナー (または、検索フィールドで押された Enterchangeのリスナー、または検索フィールドのイベントのリスナー) を作成する必要があります。さらに、jQueryを使用して支援することを検討することもできます。

于 2016-06-23T07:52:05.297 に答える