2017-01-12 11 views
0

タイトルには、拡張機能を読み込んだ後、背景がロードされます(警告メッセージで表示されます)が、その後onCommandは機能しません。私はChromeに拡張機能を読み込んだので、一度しか機能しませんでした(拡張機能を読み込んだときではなく、ホットキーをクリックしたときに初めてでした)。chrome.commands.onCommandリスナーのtabs.executeScriptを使用してスクリプトを挿入できません

私はカナリアを使用しています。

Background.js

alert('a'); 
chrome.commands.onCommand.addListener(function (command) { 
    alert('clicked'); 
    if (command === "toggle-feature") { 
     chrome.tabs.query({}, function (tabs) { 
      alert('tabs'); 
      chrome.tabs.executeScript(tabs[1].id, {"file": "content_script.js"}); 
     }); 
    } 

}); 

manifest.jsonを

{ 
    "manifest_version": 2, 
    "name": "Extractor", 
    "version": "1", 
    "description": "Extract", 
    "icons": { 
     "16": "logo16.png", 
     "48": "logo48.png", 
     "128": "logo128.png" 
    }, 
    "page_action": { 
     "default_icon": { 
      "16": "logo16.png", 
      "48": "logo48.png", 
      "128": "logo128.png" 
     }, 
     "default_title": "Extractor" 
    }, 
    "background": { 
     "scripts": ["background.js"], 
     "persistent": true 
    }, 
    "permissions": [ 
     "tabs", 
     "https://www.msn.com/*", 
     "activeTab", 
     "http://*/*", 
     "https://*/*"  
    ], 
    "commands": { 
     "toggle-feature": { 
      "suggested_key": { 
       "default": "Ctrl+Shift+1", 
       "windows": "Ctrl+Shift+2" 
      },  
      "description": "Extract now" 
     } 
    }  
} 

私は、永続的な値を削除し、変更しようとしましたが、運を持ちます。

これはChromeでもっと基本的な問題だと思います。 デベロッパーモードでキャッシュを無効にして、拡張機能を削除してからインストールしました。

+1

Canaryの機能を使用していない限り、私はChromeの安定版で開発しています。ブラウザのバグがあなたを止めてしまっているのは、とてもイライラします。私は数分ですべてを詳しく見ていきます。 – SethWhite

+0

ホットキーコマンドを押したときに* content_script.js *をアクティブなタブに挿入しようとしていますか? – Makyen

+0

エクステンションを読み込んで実行すると、[*あなたのエクステンションのさまざまな適切なコンソール](http://stackoverflow.com/a/38920982/3773011)に*正確に*表示されますか? – Makyen

答えて

0

おそらくcontent_script.jsを現在のウィンドウのアクティブなタブに挿入しようとしています。 chrome.tabs.query()から現在取得しているリストには、開いているすべてのウィンドウで開いているすべてのタブが含まれます。あなたの現在のコードは、そのリストの2番目に表示されているタブにそのスクリプトを挿入しようとします。

次のようなものにあなたのchrome.tabs.query()chrome.tabs.executeScript()を変更する必要があります。

chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { 
    //The active tab in the current window with be tabs[0]. 
    chrome.tabs.executeScript(tabs[0].id, {"file": "content_script.js"}); 
}); 

私はChromeのみではなく、カナリアのリリースバージョンでこれをテストしました。まだCanaryで問題が発生している場合は、Chromeのリリース版をテストして、カナリア固有の問題が拡張から隔離された状態に保たれるようにすることをおすすめします。 Chromeのリリース版で作業したら、Canaryを試してみてください。

関連する問題