当用户点击链接时,我正在使用以下JavaScript函数打开一个新窗口。
function popWinSimple(url,features) {
win = window.open(url,'',features);
win.focus();
}
此功能在Firefox上打开前景窗口,但在Safari和Chrome上不会执行相同的操作。
造成这种行为差异的原因是什么?
答案 0 :(得分:1)
据我所知,您无法更改此行为,因为这是由每个浏览器中的用户设置处理的。
答案 1 :(得分: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>
答案 2 :(得分:1)
每当在iframe中进行window.open调用时,我也会遇到此特定于Chrome的问题。我发现了一个问题的解决方法,即使在Chrome中,弹出窗口也会在前台打开(Firefox和Safari没有这个问题):
将event参数传递给onclick处理程序:
<button onclick="popWinSimple(event, 'url', 'features')">Popup window</button>
对事件调用preventDefault:
function popWinSimple(event, url, features) {
event.preventDefault();
win = window.open(url, '', features);
win.focus();
}
注意:我认为你不需要调用win.focus(),因为默认情况下新的弹出窗口会成为焦点。此外,在Chrome中,出于安全原因,我们禁用了win.focus()。