0

ブラウザーが新しいウィンドウを開くか新しいタブを開くかを制御できないことを認識しているため、これには解決策がない可能性があります。

問題は、基本的に次のようなものを実行することです。

function runCommand() {
   //...
   window.open(url);
}

これは、ユーザーが特別なキーを押すかクリックすると、時々実行されます。これで問題なく動作し、ユーザーのブラウザ設定に基づいて新しいウィンドウまたはタブが開きます。偉大な。

問題は、私にもいくつかのコードがあることです:

if (x.property) runCommand();

これにより、常に新しいウィンドウでURLが開きますが、同じページで別のときに使用した場合でもrunCommand、それがユーザーの設定であればタブが使用されます。

最初は、ページが完全にロードされていないことに関係しているのではないかと思ったので、ラップして、高い数値 (5 秒など)document.readyを使用してみました。setTimeout()それを行った後でもrunCommand()、後で新しいタブを開いても、最初の実行時に新しいウィンドウが開きます誰かがこの動作を経験したか、それを修正する方法を知っていますか?

編集:問題を紹介するフィドルを作成しました。ポップアップを許してください: http://jsfiddle.net/csPGU/

4

2 に答える 2

1

クリックなどのイベント ハンドラーから実行された場合window.openは新しいタブで開き、それ以外の場合は新しいウィンドウで開きます。

于 2012-04-17T05:59:38.857 に答える
1

ブラウザ自体と、ブラウザがプログラムで開かれたウィンドウを処理しようとする方法に関係していると思います。

runCommand後で発生したイベントに基づいていると思います(たとえば、何かをクリックするなど)。ブラウザーは通常、イベントによってトリガーされる新しいウィンドウを許可しますが、相互作用のないウィンドウ (通常はポップアップ) をブロックします。

于 2012-04-17T06:02:17.660 に答える