3

私は次のかなり単純な機能を持っています:

function takeFocus() {
   setTimeout(function(){window.focus();alert("OK");},1000);
} 

これは、別のウィンドウから開いたウィンドウの JavaScript 内にあります。

ユーザーがサブウィンドウを再度開いたときに、サブウィンドウに切り替えて、リロードせずに前面に表示したい。上記のように呼び出すtakeFocus()と問題なく動作しますが、プロンプトが表示されますが、これは望ましくありません。

アラートを削除すると、バックグラウンド ウィンドウがバックグラウンドのままになります。どうすればそれを機能させることができますか?

私はこれを行うためにあらゆる種類の方法を試しましたが、これまでのところ失敗しています。

jQueryが利用可能です。HTML5 での最新ブラウザー向けの記述。

4

2 に答える 2

0

答えは半分です。このコードを使用してウィンドウを開くと、Chrome で必要な動作が得られます。悲しいことに、FireFox 23.01 と IE 10 はまだ win.focus() を無視しています。

function openWin(ID) { // open workshop ID in another window
   var URL = '/chatroom.php?ID='+ID;
   var name = 'Chat'+ID;   // so if you open it twice it reopens the window.
   var win = window.open('',name); // no URL - won't refresh
   if (win.location == "about:blank") { // new open
      win.location.href = URL; 
      windows[windows.length] = win; // store for later.
  }  
  win.focus();
}

FF と IE は、最初は問題なくウィンドウを開き、2 回目のパスでデータを更新して失うことはありませんが、前景にも表示しません:(

于 2013-09-30T19:56:52.960 に答える