2016-06-22 15 views
0

WebExtensionsを使用して最初のFirefoxアドオンを書き込もうとしています(最初の拡張ではかなり複雑です)。セッション内ですべてのGoogle検索の結果を処理する必要があります(セッション=同じGoogleページを使用したクエリ)。ページが動的に変更されたときにFirefoxのアドオンを再ロード

manifest.jsonを::

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

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

    "applications": { 
     "gecko": { 
      "id": "[email protected]", 
      "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ページに入り、それが何をしているのかを確認してから停止します。ページを更新するか、アドレスバーから別のクエリを作成するときにのみ読み込まれます。

検索フィールドを使用して別の検索を行い、処理をやり直すときにアドオンをリロードする方法を見つける必要がありますが、前回の検索の結果を失うことはありません。私はクッキーを使わなければならないと思うが、私はまだそこにはいない。

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

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

答えて

0

データの保存に関しては、常にstorageを使用してそのデータを保存したり、バックグラウンドページと通信してそこにデータを保存したりすることができます(ブラウザを再起動しなくても必要な場合を除きます)。ストレージを使用することに頼る)。

ページの「読み込み中」の問題は、ページがまったく読み込まれていないことです。ページ自体はブラウザに読み込まれ、あなたが離れたところまであなたが言いました(あなたが言ったready-stateは変更されません)。本当に変化するのは、ページの内容だけです。 Google検索ボタンのリスナーをonClick(または検索フィールドにEnter pressed、検索フィールドにchangeイベントのリスナー)を作成する必要があります。 また、jQueryを使用することをお勧めします。

関連する問題