【问题标题】:focus only working with alert只关注警报
【发布时间】:2013-09-30 11:30:03
【问题描述】:

我有以下,相当简单的功能:

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

这是在我从另一个窗口打开的窗口的 JavaScript 中。

当用户重新打开子窗口时,我想切换到它,并把它带到前面,而不是重新加载它。像上面那样调用takeFocus() 工作得很好,但它会抛出我不想要的提示。

当我删除警报时,后台窗口会留在后台!我怎样才能让它工作?

我已经尝试了各种方法来做到这一点,但到目前为止我都失败了。

jQuery 可用。用 HTML5 为现代浏览器编写。

【问题讨论】:

  • 更多信息:我删除了上面例程中的 window.focus() ,保持警报 - 它将窗口带到了前台。在这种情况下,window.focus() 似乎什么都不做。仍然不明白如何更正代码:(

标签: javascript jquery focus


【解决方案1】:

此代码是否在子窗口文件中? 尝试像这样在主页中使用焦点:

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();
}

【讨论】:

  • 这确实会将窗口带到前面,但它也会使用 URL 重新加载窗口,这是我试图避免的。到目前为止,我的测试表明 open 将始终重新加载内容 - 尽管我可以在同一个窗口中加载内容。
  • 对。也许您可以将页面 url 保存在一个数组对象中并在调用函数之前进行验证,如果它不存在:创建并聚焦其他:聚焦。 var popups_holder = 新对象();函数 popupOpen(target_url, window_name){ if(typeof(popups_holder[window_name]) == undefined || typeof(popups_holder[window_name]) == 'undefined'){ var w = window.open(target_url, window_name, 'width= 450, 高度=450'); popups_holder[window_name] = w; }else{ popups_holder[window_name].focus(); } } link
  • 莱安德罗,这就是我开始的地方。找到“popups_holder[window_name].focus();”没有工作所以试图安排它,然后编写 takeFocus() 例程以在正确的上下文中安排它。我仍然没有找到一种方法可以在不刷新 URL 或使用警报的情况下将子窗口置于前台。
【解决方案2】:

我有一半的答案。通过使用此代码打开窗口,我在 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,第二遍也不刷新丢失数据,但也不把它带到前台:(

【讨论】:

    猜你喜欢
    • 2019-07-16
    • 2018-03-09
    • 1970-01-01
    • 2021-01-17
    • 1970-01-01
    • 1970-01-01
    • 2019-12-28
    • 1970-01-01
    • 2019-06-02
    相关资源
    最近更新 更多