0

アイコンを持つ拡張機能を作成しようとしていましたが、クリックするとすべてのタブの読み込みが停止します。Google Chrome拡張機能 - アイコンをクリックすると関数が呼び出される

私は、このマニフェストファイルがあります:私はjavascriptのにbackground.htmlコードを置くべきであるか分からない

chrome.browserAction.onClicked.addListener(function(tab) { 
    chrome.extension.sendRequest({reqtype: "get-settings"}, function(response) { 
    window.setTimeout("window.stop();", 0); 
    }); 
}); 

:background.htmlで

{ 
    "name": "Stop Loading", 
    "version": "1.0", 
    "manifest_version": 2, 
    "description": "Stop loading all tabs in Chrome", 
    "browser_action": { 
    "default_icon": "greyclose.png" 
    }, 

    "background_page": "background.html", 
    "content_scripts": [ { 
     "all_frames": true, 
     "js": [ "kliknuto.js" ], 
     "matches": [ "http://*/*", "https://*/*" ] 
    } ], 

    "permissions": [ "tabs", "http://*/*", "https://*/*" ] 
} 

私はこのコードを持っているがファイル "kliknuto.js"または何か他のもの。 Chromeで拡張機能ボタンをクリックするとどの機能が呼び出されますか? お時間をいただきありがとうございます。あなたのコードで

答えて

0

、background.htmlは(chrome.extension.sendRequestは、コンテンツスクリプトに送信されません)自体にクエリを送信し、及び/それが応答を取得するときにあれば、その後、背景ページではなく、自体window.stop()を呼んでいますタブよりも。何が本当に必要なのです。

background.html

... 
chrome.browserAction.onClicked.addListener(function(tab) { 
    // get all tabs in all windows 
    chrome.windows.getAll({"populate":true}, function(winArray) { 
     for(var i = 0; i < winArray.length; ++i) { 
      for(var j = 0; j < winArray[i].tabs.length; ++j) { 
       var t = winArray[i].tabs[j]; 
       // push code to each tab 
       chrome.tabs.executeScript(t.id, {"code":"window.stop();", "allFrames":"true"}); 
      } 
     } 
    }); 
}); 
... 

このソリューションは、コンテンツスクリプトの代わりにexecuteScriptを使用しています。代替ソリューションと

EDIT:

がその背景ページからの注文を待機する各タブにコンテンツスクリプトを添付します。

background.html

... 
chrome.browserAction.onClicked.addListener(function(tab) { 
    // get all tabs in all windows 
    chrome.windows.getAll({"populate":true}, function(winArray) { 
     for(var i = 0; i < winArray.length; ++i) { 
      for(var j = 0; j < winArray[i].tabs.length; ++j) { 
       var t = winArray[i].tabs[j]; 
       // push code to each tab 
       chrome.tabs.sendRequest(t.id, {"order":"stop"}); 
      } 
     } 
    }); 
}); 
... 

kliknuto.js:

chrome.extension.onRequest(function(request) { 
    if(request.order == "stop") { 
     window.stop(); 
    } 
}); 

コンテンツスクリプトのように聞いて開始されるように、あなたのマニフェストでcontent_scriptブロックに"run_at":"document_start"を追加していることを確認しますできるだけ早く。

+0

説明ありがとうございました! – Juraj

+0

ところで、私のコードには括弧がありませんでした。私は今それを修正しましたので、あなたが現在のバージョンを使用していることを確認してください。 – apsillers

+0

これで拡張機能が調整され、Chromeにロードされました。私は再読み込みを開始するためにタブの束のためにChromeを再開しましたが、拡張機能のボタンは何もしていないようです。 – Juraj

関連する問題