![](/img/trans.png)
[英]window.open not working when attached on onload event in chrome and safari
[英]Open new window after a click event not working in Safari, Chrome
我正在尝试像这样打开一个新窗口:
$('#wrapper').click(function() {
window.setTimeout(function() {
//alert('hi');
window.open("http://example.com", "ExternalLinks", "resizable=yes, scrollbars=yes, status=yes");
}, 1000);
});
这在Firefox中有效,但在Chrome或Safari中无效(到目前为止,我刚刚在Mac上进行了测试)。 alert()
在所有浏览器中均可使用,因此似乎存在某些因素阻止window.open
在Safari / Chrome中执行。 此外,如果删除setTimeout
并仅调用window.open
则它在所有3种浏览器中均有效。 这几乎就像window.open
嵌套在距click
事件太远的地方,那么它在Safari / Chrome中不起作用。
因此,您知道,我有一个全闪存网站,并且我试图在一个新窗口中打开外部链接,因此我正在阅读URL中的井号(例如htp://example.com/# / facebook /),如果它与某些项目匹配,那么我正在调用window.open
打开特定的URL。 我无权访问Flash源,否则我将在那里处理。
有任何想法吗?
Safari / Chrome浏览器具有内置的弹出窗口阻止程序,无法正常运行。 唯一允许在Safari / Chrome中打开新窗口的javascript是直接附加到点击处理程序(和其他直接用户输入处理程序)的javascript。 在过去的版本中,人们想出了一些作弊的方法(例如生成其他元素-表单或div-并使用javascript模拟用户输入),但是较新的版本在检测时更聪明。 我建议您重新配置内容,以免您使用延迟的弹出窗口-毕竟这通常会给用户带来不适。
我通过检查window.open()的返回值是否未定义来解决此问题。 如果是这样,请调用alert()并向用户提供一条消息,以禁用其弹出窗口阻止程序。
var myWin = window.open([args]);
if (myWin == undefined)
alert('Please disable your popup blocker');
另一个解决方法
只需打开带有ACCEPT和CANCEL选项的弹出窗口并附加窗口即可。
按“接受”按钮操作,它将起作用。 它对我有用...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.