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第一次打开窗口OK,第二遍没有刷新和丢失数据,但也没有把它带到前台:(

于 2013-09-30T19:56:52.960 回答
0

这段代码在子窗口文件中吗?尝试在主页中使用焦点,如下所示:

function newPopup(url) {
popupWindow = window.open(
url,'popUpWindow3','height=500,width=900,left=10,top=10,resizable=yes,scrollbars=yes,toolbar=no,menubar=no,location=no,directories=no,status=no');
popupWindow.focus();
}
于 2013-09-30T12:08:04.947 回答