1

短い間隔で左右クリックすると新しいタブを開くだけのGoogleChrome拡張機能を書こうとしています。JavaScriptは問題ありませんが、これを「content_scripts」スクリプトとして実装しました。

他のいくつかのスレッドでは、content_scriptsからchrome。* APIにアクセスできないことを読みました(chrome.extension APIを除く)。

新しいウィンドウを開くためにchrome.tabsAPIにアクセスする必要がない場合でも(window.openが機能するはずです)、新しいタブページで新しいタブを開くために必要なようですが、これは明らかにウィンドウでは不可能です。 。開いた。

だから私はそれを行うための最良の方法が何であるかを本当に理解することはできません。content_scriptから呼び出すことができるバックグラウンドページを使用することもできますが、それを行うにはもっと簡単な方法があるはずだと思います。私はそれを取得できません。

誰かアイデアがありますか?

4

2 に答える 2

1

シンプルで簡単

document.body.onclick = function openNewWindow(  ) {
  window.location.href = 'javascript:void window.open( "chrome://newtab" )';
}

マニフェスト:

,"permissions":[
    "http://*/*"
    ,"https://*/*"
  ]
  ,"manifest_version": 2
  ,"content_scripts":[{
    "matches":[
      "http://*/*"
      ,"https://*/*"
    ]
    ,"js":[
      "js/openWindow.js"
    ]
  }]

質問を理解できません...変更しました

于 2013-02-07T01:28:31.037 に答える
1

コンテンツスクリプトは、呼び出すためにバックグラウンドページにメッセージを送信する必要があると思います。コンテンツスクリプトはchrome.tabs.create、chrome apiを使用することも、バックグラウンドページと直接通信することもできません。

詳細については、Chrome拡張機能内でのメッセージパッシングに関するリファレンスを次に示しますが、サンプルコードを次に示します(上記のリファレンスの例から変更)。

// in background
chrome.extension.onMessage.addListener(
  function(request, sender, sendResponse) {
    switch ( request.action) {
       case 'newTab' : {
         //note: passing an empty object opens a new blank tab, 
         //but an object must be passed
         chrome.tabs.create({/*options*/}); 
         // run callback / send response
       } break;
    }
    return true; //required if you want your callback to run, IIRC
  });

// in content script:
chrome.extension.sendMessage({action: "newTab"}, function(response) {
  //optional callback code here.
});
于 2013-02-07T00:40:05.980 に答える