-2

プラグインを任意のページの読み込み時に動作させ、そのコンテンツの一部を変更する必要があります。そのために、コンテンツ スクリプトを作成し、外部 js ファイルを追加しました。外部 js ファイルに、chrome.tab.* にアクセスできません。間違っている?

------ コンテンツスクリプト ----

debugger;
var s = document.createElement('script');
            s.src = chrome.extension.getURL("script.js");
            (document.head||document.documentElement).appendChild(s);
            s.parentNode.removeChild(s);


            /*chrome.runtime.sendMessage('3645374', 'any message',[] , function(){  alert('---...---'); } )     ;   

chrome.tabs.executeScript(null, {file: "doWhatYouWant();"});


document.addEventListener('DOMContentLoaded', function() {
     chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
        if (changeInfo.status == 'complete') {
            var s = document.createElement('script');
            s.src = chrome.extension.getURL("script.js");
            (document.head||document.documentElement).appendChild(s);
            s.parentNode.removeChild(s);
            chrome.tabs.executeScript(null, {code:"doWhatYouWant();"});
        }
    });
});*/

-------------------- script.js --------------

function doWhatYouWant(){
    alert('inside .... doWhatYouWant');
    document.getElementById('zx12').value = "CHANGED !";
}


chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
    if (changeInfo.status == 'complete') {
    debugger;
        alert('I am here too ');
        // Execute some script when the page is fully (DOM) ready
        chrome.tabs.executeScript(null, {code:"doWhatYouWant();"});
    }
});


/*chrome.extensions.onRequest.addLiestener( function(p1,p2,p3){
  alert('done');
  document.getElementById('zx12').value = "CHANGED !";
});



chrome.runtime.onMessage.addListener(function (){
   alert('doWhatYouWant called');
});



document.addEventListener('DOMContentLoaded', function() {
  document.getElementById('zx12').value = "CHANGED !";
});
*/

----------------------- manifest.json ---------------

{
  "name": "My Chrome Extension",
  "version": "1.0",
  "manifest_version": 2,
  "content_scripts": [{
      "matches": ["http://*/*","https://*/*"],
      "js": ["jquery.js","contentscript.js"]
  }],
  "web_accessible_resources" : ["script.js"],
  "permissions": [
    "activeTab"
  ]
}
4

1 に答える 1

2

コンテンツ スクリプトは、ほとんどの Chrome 拡張 API を使用できません。(chrome.extension.getURLあなたが行っている呼び出しはまれな例外です。)おそらくchrome.tabs、拡張機能のバックグラウンド ページにイベント リスナーを実装し、メッセージをコンテンツ スクリプトに渡す必要があります。

コンテンツ スクリプトに関する Google Chrome ドキュメント、特に制限事項に関する導入セクションと実行環境に関するセクションをお読みください。

于 2013-10-22T07:35:44.257 に答える