web-dev-qa-db-ja.com

Google Chrome拡張機能-ツールバーアイコンをクリックすると新しいタブを開く

ツールバーにアイコンを追加するChromeの拡張機能を作成し、それをクリックすると、ローカルWebページ(f.htmlなど)で新しいタブが開きますか?

この質問 を見ましたが、マニフェストファイルに何を追加すべきかを実際には説明していません...

68
Alon Gubkin

新しいchromeアプリの場合、これは当てはまりません。

新しいchrome manifest_version:2を持つアプリでは、次のようにタブを開く必要があります。


chrome.browserAction.onClicked.addListener(function(activeTab)
{
    var newURL = "http://www.youtube.com/watch?v=oHg5SJYRHA0";
    chrome.tabs.create({ url: newURL });
});

92
Abhishek Mehta

さて、 extensions docs では、 manifest で述べられていますが、その許可として「タブ」を含める必要があります。 Hello Worldアプリケーションの説明と同じ方法で:

マニフェストファイル:

{
  "name": "My Extension",
  "version": "1.0",
  "description": "Opens up a local webpage",
  "icons": { "128": "icon_128.png" },
  "background_page": "bg.html",
  "browser_action": {
    "default_title": "",
    "default_icon": "icon_19.png"
  },
  "permissions": [
    "tabs"
  ],
}

バックグラウンドページ 内で、ブラウザアクションのマウスクリックイベントをリッスンします。

chrome.browserAction.onClicked.addListener(function(tab) {
  chrome.tabs.create({'url': chrome.extension.getURL('f.html')}, function(tab) {
    // Tab opened.
  });
});

上記で気づいたように、他の投稿で見た質問を使用したことがわかります。これはテストされていませんが、動作するはずです。

52
Mohamed Mansour

chrome.tabs.createには「タブ」の許可が必要です。

拡張機能でwindow.openを許可なしで使用するだけです。コードが短くなります。この解決策をお勧めします。

window.open(url,'_blank');
5
cuixiping