0

当用户单击链接时,我正在使用以下 JavaScript 函数打开一个新窗口。

function popWinSimple(url,features) {
    win = window.open(url,'',features);
    win.focus();
}

此功能在 Firefox 上打开前台窗口,但在 Safari 和 Chrome 上不这样做。

造成这种行为差异的原因可能是什么?

4

3 回答 3

1

据我所知,您无法更改此行为,因为这是由每个浏览器中的用户设置处理的。

于 2012-08-14T16:13:15.253 回答
1

在 OSX Lion 上的几乎库存配置中使用 Safari 和 Chrome,我正在加载以下页面。我观察到的行为是选项卡在案例 1 和 2 的前面加载,案例 3 闪烁到前面,然后焦点返回到调用选项卡。对于这种情况,我认为没有比 javascript 的 focus() 和 blur() 调用更强大或更可靠的方法。

<html>
    <body>
        <a href="." onclick="javascript:var w = window.open('foo.html'); return false;">click normal</a>
        <br />
        <a href="." onclick="javascript:var w = window.open('foo.html'); w.focus(); return false;">click and focus</a>
        <br />
        <a href="." onclick="javascript:var w = window.open('foo.html'); w.blur(); window.focus(); return false;">click and unfocus</a>
    </body>
</html>
于 2012-08-14T16:28:57.597 回答
1

每当从 iframe 中进行 window.open 调用时,我也会遇到这个特定于 Chrome 的问题。我找到了一种解决方法,即使在 Chrome 中也会使弹出窗口在前台打开(Firefox 和 Safari 没有这个问题):

  1. 将事件参数传递给您的 onclick 处理程序:

    <button onclick="popWinSimple(event, 'url', 'features')">Popup window</button>
    
  2. 在事件上调用 preventDefault:

    function popWinSimple(event, url, features) {
      event.preventDefault();
      win = window.open(url, '', features);
      win.focus();
    }
    

注意:我认为您不需要调用 win.focus() 因为默认情况下新的弹出窗口将成为焦点。此外,出于安全原因,在 Chrome 中 win.focus() 被禁用。

于 2016-09-06T06:42:17.537 回答