用于阻止浏览器弹出窗口的 JavaScript 被阻止

标签 javascript html google-chrome

我使用此代码重定向到新选项卡:

<script type="text/javascript">window.open('http://example.com');</script>

但是当我在 Google Chrome 中运行它时,它显示“POPUP BLOCKED”并且它仍然在页面上。 那么如何通过添加 javascript 来阻止 google chrome 显示被阻止的弹出窗口。 我可以从我的计算机上阻止此操作,因为 chrome 中有一个选项“始终允许”,但如果我发布它,那么每个受众都无法执行此操作。

最佳答案

您无法“阻止”Chrome 执行此操作,这就是弹出窗口拦截器的全部意义。
事实上,您一开始就不应该尝试创建弹出窗口,人们会因此讨厌您。

新选项卡或窗口只能作为用户操作的结果而打开(并且其他所有内容都正确被阻止),因此最好的方法可能是创建一个简单的链接(<a> )与 target="_blank" .

但是如果我没记错的话,如果有问题的代码是从 click 的上下文中运行的,那么您实际上可以在大多数浏览器中创建弹出窗口。如果事件是用户事件(而不是由脚本调度的事件),则事件处理程序(以及其他一些事件处理程序,例如 dblclick ,但不是像 mouseover 之类的东西)。
因此,如果链接确实不够,请尝试类似

myElement.addEventListener('click', function()
{
    window.open('http://example.com');
});

这当然只有在用户单击该元素时才有效,但我可以向你保证,如果他们不单击它,他们就不想看到弹出窗口。

演示:Fiddle .

关于用于阻止浏览器弹出窗口的 JavaScript 被阻止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30117585/

相关文章:

google-chrome - 是否可以在单独的窗口中打开 chrome 调试器?如何?

SPA 中的 Html 标记抽象和一致性

PHP 删除相邻的关闭和打开脚本标签

android - 谷歌地图在 Chrome 移动版中无法交互

javascript - vue绑定(bind)父子组件

html - 当我不使用溢出时, float div 不显示背景颜色?

java - ChromeDriver org.openqa.selenium.remote.ProtocolHandshake createSession

javascript - 仅在禁用 javascript 时执行操作

javascript - 许多具有相同类 getDate 的 Datpicker

javascript - 为什么添加另一个事件监听器后 FirstPersonControls.js 会停止运行?