2017-12-16 8 views
0

拡張機能のHTMLをポップアップではなく新しいタブで開くようにします。既存の拡張子Session Buddyは、私が複製しようとしている正確な動作をしています。ツールバーアイコンをクリックしたときに新しいタブでクロム拡張機能を開く

問題は、ツールバーのアイコンをクリックした後にChromeが新しい拡張タブを開いて、必要な動作が(明らかに)1つのタブだけを開いているときです。不思議なことに、https://stackoverflow.com/などの「ウェブURL」を使用すると、1つのタブだけを開くことができます。

manifest.json

{ 
    "manifest_version": 2, 
    "name": "angular chrome extension boilerplate", 
    "version": "1.0.0", 
    "background": { 
     "scripts": ["background.js"], 
     "persistent": true 
    }, 
    "permissions": [ 
     "activeTab", 
     "tabs", 
     "background" 
    ], 
    "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'" 
} 

background.js:このサイト上

chrome.tabs.create({ url: chrome.extension.getURL('index.html') }); 

いくつかの記事は、同様の問題が、提案ソリューションのどれもが私のために働いてきた:

+1

:また、以前に永続的な背景を使用してactiveTab許可は不要であり、削除することができます。

manifest.json改訂

[サンプル](https://で開発。 chrome.com/extensions/examples/api/browserAction/make_page_red/background.js)。 – wOxxOm

+0

クリックリスナーの中に 'chrome.tabs.create()'を置くとタブが開きません。 – GreatHam

+1

[バックグラウンドスクリプトをデバッグする](https://stackoverflow.com/a/10258029)! – wOxxOm

答えて

1

それは、ツールバーのアイコンをクリックすると開くためのタブを取得するための正しい方法はonClickedリスナーにchrome.tabs.create()への呼び出しをラップすることであることが判明:

background.jsを改訂:

chrome.browserAction.onClicked.addListener(function(tab) { 
    chrome.tabs.create({ url: chrome.extension.getURL('index.html'), selected: true }); 
}); 

当初、のchrome.browserAction.onClickedであるため、これは機能しません。これを解決するには、one needs to add an empty "browser_action" object to manifest.json。アイコンのクリックリスナーの中に置く

{ 
    "manifest_version": 2, 
    "name": "angular chrome extension boilerplate", 
    "version": "1.0.0", 
    "browser_action": { }, 
    "background": { 
     "scripts": ["background.js"], 
     "persistent": false 
    }, 
    "permissions": [ 
     "tabs", 
     "background" 
    ], 
    "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'" 
} 
関連する問題