gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 02:18:18 29 4
gpt4 key购买 nike

我正在尝试像这样打开一个新窗口:

$('#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 中不起作用。

所以你知道,我有一个全 Flash 网站,我正在尝试让外部链接在新窗口中打开,所以我正在读取 URL 中的哈希标签(例如 htp://example. com/#/facebook/),如果它匹配某些项目,那么我将调用 window.open 打开特定的 URL。我无权访问 Flash 源,否则我会在那里处理。

有什么想法吗?

最佳答案

Safari/Chrome 有内置的弹出窗口拦截器,可以阻止它工作。唯一允许在 Safari/Chrome 中打开新窗口的 javascript 是直接附加到点击处理程序(和其他直接用户输入处理程序)的 javascript。在过去的版本中,人们找到了一些作弊的方法(比如生成一些其他元素——表单或 div——并使用 javascript 模拟用户输入),但新版本更聪明地检测到这一点。我建议重新配置一些东西,这样您就不会使用延迟弹出窗口——毕竟这种东西通常会让用户感到不快。

关于javascript - 单击事件后打开新窗口在 Safari、Chrome 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4663861/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com