如果我启动了一个jQuery的window.open(),它被阻止的弹出窗口拦截,如果我手动单击该窗口不被阻止.两者之间的浏览器不同?
解决方法
Firefox的实现在
this bug上进行了详细的讨论,this other bug有一些更有趣的背景,包括什么长度的网站将通过,以防止不需要的弹出窗口在不知情的用户(在这种情况下:调用window.open()从在图像加载事件中).如果您在Bugzilla周围搜索,您会发现Mozilla的用户花了好几年时间才能正常工作,例如
here’s a bug from 2001.
它的工作原理是这样的:当Firefox从操作系统接收到一个点击事件时,一段时间内window.open()被启用了JavaScript(在…中查找dom.disable_open_click_delay:config).如果您从代码中调用click()事件,而没有用户点击发生,那么第一步,window.open()的启用永远不会发生,尽管对window.open()的调用本身将成功通过to stop sites detecting that you have popup blocking enabled.
我不知道其他浏览器如何实现这些东西,但是如果它有很大的不同,这将是令人惊讶的.