9

単一のタブまたはタブ グループを開くオプションをユーザーに提供します。特別なリンクをクリックすると、関連するいくつかのタブが開きます。複数のタブを開くための JavaScript は次のとおりです。

<li>
  <a href="javascript:launchAll()">Or launch them all at once</a>
</li>

<script>
   function launchAll() {
     var win = window.open("http://domain.com/page1");
     win = window.open("http://domain.com/page2");
     win = window.open("http://domain.com/page3");
     win = window.open("http://domain.com/page4");
   }
</script>

最初の 2 つはタブとして開き、2 番目の 2 つはポップアップとして、または別のウィンドウで開こうとしますが、私の場合はブロックされています。ポップアップのブロックを解除することは問題ではなく、この UI も問題ではありません。私の質問は、これら 4 つの一見同一の呼び出しが異なる結果をもたらす理由です。

更新: これは Chrome でのみ発生するようです。Firefox と Safari はすべて新しいタブとして開きます。誰かが回避策を知っていますか?

4

1 に答える 1

6

この制限は、実際には Chrome のセキュリティ設定によるものです。Chrome では、ユーザーがワンクリックで無制限のタブを開くことを望んでいません。したがって、彼らが使用する設定は、最初のクリックで最大 2 つのタブ、追加のクリックごとに 1 つのタブです。したがって、これを回避したい場合は、次のようにする必要があります。

<li>
  <a href="javascript:launchAll()">Or launch them all at once</a>
  <a href="javascript:launch()" id="test"></a>
  <a href="javascript:launch2()" id="test2"></a>
</li>

<script>
   function launchAll() {
     var win = window.open("http://domain.com/page1");
     win = window.open("http://domain.com/page2");
     document.getElementById("test").click();
   }
   function launch(){
     var win = window.open("http://domain.com/page3");
     document.getElementById("test2").click();
   }
   function launch2(){
     var win = window.open("http://domain.com/page4");
   }
</script>

<a id="test*">コンテンツが空であるため、ドキュメントに表示されないため、レイアウトは同じままであることに注意してください。

また、このclick()メソッドは Firefox には存在しないため、hereのようなものを使用する必要があることに注意してください。

于 2012-11-20T12:11:00.190 に答える