2011-12-10 23 views
4

これは私のbackground.htmlファイルです。現在のタブで開くとうまくいきますが、新しいタブで開きたいのですが、何が間違っていますか?Google Chrome拡張機能で新しいタブを開く

<html> 
<head> 
<script> 
    // Called when the user clicks on the browser action. 
    chrome.browserAction.onClicked.addListener(function(tab) { 
    var action_url = "javascript:location.href='http://www.reddit.com/submit?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)"; 
    chrome.tabs.create(tab.id, {url: action_url}, function(tab)); 
    }); 
</script> 
</head> 
</html> 
+0

あなたaction_url設定で始まっていることを確認してください: 'ます。http://'や 'HTTPSを://' –

答えて

6

もう一度chrome.tabs.createdocumentationを読む必要があります。 invaldパラメータを渡しています。また、chrome.browserAction.onClickedリスナーに渡されたtabパラメータではなく、コードが予期しているWebページ文書ではなく、文書のlocationも使用しています。

<html> 
<head> 
<script> 
    // Called when the user clicks on the browser action. 
    chrome.browserAction.onClicked.addListener(function(tab) { 
    var action_url = "http://www.reddit.com/submit?url=" + encodeURIComponent(tab.href) + '&title=' + encodeURIComponent(tab.title); 
    chrome.tabs.create({ url: action_url }); 
    }); 
</script> 
</head> 
</html> 
+0

タブのIDを取得するには? – st4rgut

1

ポップアップを使用して主張し、それは、すぐにそれが開かれる閉じたい場合は、この

<html> 
... 
<body> 
    <script> 
    function createTab() { 
     chrome.tabs.create({url: "http://www.stackoverflow.com"}); 
    } 
    </script> 
    <a href="#" onclick="createTab();">Create a new tab</a> 
</body> 
</html> 
+0

私は私が実際に新しいタブができるだけ早く作成することにしたい、このようにそれをしたくないんアイコンが押された。 – orange

+0

@Jeffこれは単なる例です。私は 'chrome.tabs.create'コマンドを複雑にする必要がないことを示したかったのです。代わりにこれを使用してみてください。 JavaScriptがうまくいきませんが、「var action_url」は私には奇妙に思えます... JavaScriptコンソールでエラーが発生していないか確認してください。 – user219882

+0

マニフェスト2.0では、デフォルトの[コンテンツセキュリティポリシー](https://developer.chrome.com/extensions/contentSecurityPolicy)がインラインJavaScriptを禁止しています。 – 10basetom

0
<html> 
<head> 
    <script type="text/javascript"> 
    window.master = ({ 
    newtab: function(url, callback) { 
     callback = callback === true ? (function() { this.close(); }) : callback; 

     try { 
     chrome.tabs.create({ 
      url: url 
     }); 

     if(typeof callback === "function") { callback.call(this, url); } 
     } catch(e) { 
     /* Catch errors due to possible permission issues. */ 
     } 
    }, 

    link: function(event, close) { 
     event = event ? event : window.event; 
     event.preventDefault(); 
     this.newtab(event.href, close); 
    }, 

    close: function() { window.self.close(); } 
    }); 
    </script> 
</head> 

<body> 
    <!-- Usage is simple: 

     HTML: 
     <a href="http://example.com/" onclick="master.link(event)" /> 

     JavaScript: 
     master.newtab("http://example.com/", true); 
    --> 
</body> 
</html> 

を試すことができ、その後、上記のあるものを使用します。 master.newtab関数にリンク文字列とtrueブール値を追加するだけで、新しいタブを開いてポップアップを閉じることができます。

ポップアップを閉じることを忘れた場合は、trueブール値を新しいタブがエラーなしで作成された場合に実行する関数に置き換えることができます。アンカー要素からmaster.newtab関数を呼び出すには、master.link関数を使用することもできます。

Chrome拡張機能を使用する際には、サポートの問題について心配する必要はありません。 :D

+0

これは動作していないようです。アイコンをクリックすると反応しません。reddit submit bookmarklet jsを使用しています。 – orange

関連する問題