web-dev-qa-db-ja.com

プログラムでChromeプラグインのoptions.htmlページを開きますか?

Background.htmlのJavascriptを介してGoogle Chromeプラグインのoptions.htmlページを開く方法はありますか?

29
davidscolgan
chrome.tabs.create({ url: "options.html" });

更新

バージョン40以降、Chromeは、専用のオプションページ(非推奨)ではなく、拡張機能管理ページからの新しいポップアップオプションダイアログを使用するようになりました。 URL。

chrome.tabs.create({ 'url': 'chrome://extensions/?options=' + chrome.runtime.id });
48
serg

有効になっている新しいメソッドがあります Chrome 42 で始まります:

chrome.runtime.openOptionsPage(function callback)

可能であれば、拡張機能のオプションページを開きます。

正確な動作は、マニフェストのoptions_uiまたはoptions_pageキー、またはその時点でサポートされているChrome)によって異なります。たとえば、ページは新しいタブ、chrome://extensions内、アプリ内、または開いているオプションページにフォーカスするだけの場合があります。呼び出し元のページが再読み込みされることはありません。

拡張機能がオプションページを宣言していない場合、またはChromeが他の理由でオプションページを作成できなかった場合、コールバックはlastErrorを設定します。

49
Xan

(複製を開く代わりに)すでに開いているオプションページを開くか、切り替えます。

var optionsUrl = chrome.extension.getURL('options.html');

chrome.tabs.query({url: optionsUrl}, function(tabs) {
    if (tabs.length) {
        chrome.tabs.update(tabs[0].id, {active: true});
    } else {
        chrome.tabs.create({url: optionsUrl});
    }
});
25
NARKOZ

Chrome APIを使用せず、標準のWeb APIのみを使用すると、次のことが可能になります。

window.open("chrome-extension://ghipmampnddcpdlppkkamoankmkmcbmh/options.html")

または、表示されているページから拡張ページに移動するには:

location.href = "chrome-extension://ghipmampnddcpdlppkkamoankmkmcbmh/options.html"

これには、拡張IDをハードコーディングする必要があります。

おそらく、Chrome APIを使用するよりも、これが望ましいのは、非拡張コンテキストから呼び出されたときだけです(元の「バックグラウンドページから」のシナリオではありません)。ただし、Webコンテキストは web-として宣言されている)でない限り、chrome-extension://*ページに移動できないことに注意してください(結果はabout:blankになります)。アクセス可能

このようなシナリオでは、代わりにコンテンツスクリプトまたは 外部メッセージング のいずれかを介してWebページと通信することも検討する必要があります。

1
Joseph Marikle