2016-03-26 14 views
0

URLがhttps://www.example.com/*に一致するページでコンテンツスクリプトcontent.jsを実行する場合にこの問題が発生します。私は、次のmanifest.jsonで定義されています:URLの更新時にコンテンツの読み込みスクリプト

{ 
    ... 

    "content_scripts": [ 
    { 
     "matches": ["https://www.example.com/*"], 
     "js": ["content.js"] 
    } 
    ], 

    ... 
} 

ただし、ユーザーがハイパーリンクをクリックすることにより、例えば、https://www.example.com/*に別のページ(たとえばhttps://www.foo.bar)から移動したときにcontent.jsがロードされません。ユーザーが直接https://www.example.com/*にアクセスしたときにのみロードされます。

私はすべてのページにcontent.jsを注入考慮し、現在のURLがhttps://www.example.com/*と一致するかどうかを確認するために、バックグラウンドでchrome.tabs.onUpdateのリスニング、およびそのcontent.jsにメッセージを送るに依存しています。これを回避するより良い方法はありますか?

答えて

0

あなたがメッセージを受信/ executeScriptのコールバックを送信するためにある機能作り、背景ページからプログラムスクリプトを挿入することができますそれからちょうどあなたのリスナー(S)からこの関数を呼び出す

function processUrl(tabId, url) { 
    if(url.indexOf("https://www.example.com")>-1){ 
    chrome.tabs.executeScript(tabId, {file:"content.js"}, function() { 
     //send and receive msgs here 
    }; 
    } 
} 

を。ライブラリやその他の依存関係を使用する場合は、最初にライブラリでexecuteScriptを呼び出し、最初の呼び出しのコールバックでスクリプトでexecuteScriptを呼び出します。

関連する問題