繁体   English   中英

单击事件在Safari,Chrome中不起作用后打开新窗口

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM