JavaScript 在后台打开窗口,而不是在 Chrome 和 Safari 中打开前台
JavaScript opens the window in the background instead of foreground in Chrome and Safari
我正在使用下面的JavaScript函数在用户单击链接时打开一个新窗口。
function popWinSimple(url,features) {
win = window.open(url,'',features);
win.focus();
}
此功能在Firefox上打开前台窗口,但在Safari和Chrome上不会执行相同的操作。
造成这种行为差异的原因可能是什么?
据我所知,您无法更改此行为,因为这由每个浏览器中的用户设置处理。
在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>
每当从iframe中进行window.open调用时,我也遇到了这个特定于Chrome的问题。我找到了解决此问题的方法,即使在Chrome中,弹出窗口也会在前台打开(Firefox和Safari没有此问题):
-
将事件参数传递到您的点击处理程序中:
<button onclick="popWinSimple(event, 'url', 'features')">Popup window</button>
-
调用 prevent默认事件:
function popWinSimple(event, url, features) { event.preventDefault(); win = window.open(url, '', features); win.focus(); }
注意:我认为您不需要调用win.focus(),因为默认情况下,新的弹出窗口将占据焦点。此外,出于安全原因,在Chrome中win.focus()被禁用。
相关文章:
- jQuery Datepicker可以在Safari中工作,但不能在FF或Chrome中工作
- jQuery表单验证适用于Mozilla和Internet Explorer,但不适用于Chrome或Safari
- JS代码在jsbin中有效,在jsfiddle或Chrome/Safari中无效
- jQuery$.post可以在chrome、safari中工作,但不能在FF中工作(声明成功回调函数未定义)
- 在safari和chrome中,js图像加载产生了奇怪的结果
- 元素意外地隐藏在Safari的某些实例中,总是出现在Firefox、Chrome中
- JS适用于Firefox和Safari,但不适用于Chrome.此处'是我的网站
- 在不支持的浏览器中替代IndexedDB?Safari/iOS Safari Chrome
- 使用内联块设置的 Safari/Chrome 重叠元素
- 桌面网络工具包(safari / chrome)中具有绝对定位元素的奇怪渲染错误
- 在 Safari/Chrome 中,如何在 ready() 和 focus() 上触发函数 A,在 blur() 上触发
- $(“#id选项”).hide();不适用于safari/chrome
- jQuery offset()在Safari/Chrome iOS中不起作用
- 动画gif获胜't在Safari Chrome或Firefox中循环
- 移动Safari/Chrome上Angular应用程序的键盘严重滞后
- jQuery问题(Safari/Chrome)与平滑滚动
- jQuery只适用于firefox或safari/chrome控制台
- 编码浏览器扩展,插件,Firefox, Safari, Chrome等…这是可能的吗?
- JQuery -适用于Firefox,但不适用于Safari, Chrome或Mobile
- AngularJS ng-model在Firefox/Safari/Chrome中