2012-09-12 19 views
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キーを押す前にコンテンツスクリプトがロードされ、私がまだいないサイトにロードされます。

私は何が起こっているのか分かりません。私を助けてください。私はあなたがChromeで「インスタントブラウジング」というオプションを有効にしていると思います

screenshot

答えて

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; 
    } 
}); 
0

は、私はいくつかの時間前に同じ問題があったが、まさにこのような理由で、私はそれを無効にし、もうそれを使ったことがありません。

+0

からリファラを取得するが、これは私がクライアントに私の拡張を配布したいので、私はクライアントマシン上で「インスタントブラウジングを」無効にすることはできませんと思い、私のために有用ではありません:( – tomash

+0

はい、あなたは正しいですが、Chromeのこのオプションが気に入らず、開発者はここで何もできないので、これはGoogleが解決しなければならない質問だと私は信じています。ユーザーがEnterキーを押した後に拡張機能を読み込んで読み込みますが、これはGoogleが解決しなければならないものだと私は信じています – haynar

+0

ともうひとつ、正確には分かりませんが、クロム固有のDOMイベントがあります可能であるこの状況を捉え、そのようなケースを処理するためには、それは別の良い解決策になるでしょう... – haynar

関連する問題