5

クロム拡張の開発に問題があります。

私はコンテンツスクリプトを持っています:

window.addEventListener("load",function(){
   var html = document.getElementsByTagName('html')[0];
   var title = document.getElementsByTagName('title')[0].innerHTML;
   if(html){
      chrome.extension.sendRequest({akce: 'content', title: title},function(response){});
      alert(title);
   }
},false);

次に、BGページがあります:

chrome.extension.onRequest.addListener(function(request,sender,sendResponse){
    if(request.akce == 'content'){
        console.log(request.title);
    }
});

問題は、アドレス バーに入力を開始すると、オートコンプリート リストの最初のサイトにコンテンツ スクリプトが読み込まれることです。下のスクリーンショットでわかるように、コンテンツ スクリプトは、アドレス バーで Enter キーを押す前に読み込まれ、まだ読み込まれていないサイトに読み込まれます。

何が起こっているのかわかりません。助けてください。

スクリーンショット

4

2 に答える 2

4

ソリューションは、バックグラウンド ページからスクリプトを挿入します。

例: bg ページからリファラーを取得する

chrome.tabs.executeScript(tabId,{
    code: "chrome.extension.sendRequest({action: 'content_refer', url: document.referrer},function(response){});"
});

chrome.extension.onRequest.addListener(function(request,sender,sendResponse){
    if(request.action == 'content_refer'){
        wipstats.allPages[sender.tab.id].ref = request.url;
    }
});
于 2012-09-14T12:32:32.843 に答える
0

Chrome で「インスタント ブラウジング」というオプションを有効にしていると思いますが、私はしばらく前に同じ問題を抱えていました。まさにこの理由で、それを無効にし、もう使用しませんでした。

于 2012-09-12T14:36:21.743 に答える