被阻止的弹窗 vs 非被阻止的弹窗

3

我发现浏览器并不会阻止所有弹出JavaScript窗口。

如何编写不会被浏览器阻止的JavaScript弹出窗口?

我的意思是,是什么主要因素造成了这种差异?


有人能否将这个问题重新命名,以便更易读和理解。 - user94893
2个回答

8
在Firefox(以及大多数其他具有弹出窗口拦截器的现代Web浏览器)中,如果JavaScript窗口是用户点击的结果,则通常允许它们,但如果它们试图在后台打开,则会被停止。
与这些不良弹出窗口相比,请看这些良好弹出窗口所使用的方法。网站上提供源代码。以下是“良好”弹出窗口的源代码:
<a href="javascript:winopen('http://www.popuptest.com/popup3.html','blank','width=450,height=235,status=yes')">Good PopUp #1</a>
<br><br>
<A class=blu HREF="http://www.popuptest.com/popup2.html" target="_BLANK">Good PopUp #2</A>
<br><br>
<A class=black HREF="http://www.popuptest.com/popup3.html" onclick="NewWindow(this.href,'rank','450','450','yes','center');return false" onfocus="this.blur()">Good PopUp #3</A>
<br><br>
<a href="javascript:PopWindow('http://www.popuptest.com/popup4.html', 450, 320)">Good PopUp #4</A>

只有其中两个弹出链接看起来还不错,其余的都无法访问。 - Eli Grey

4
决定哪个弹出窗口会被阻止的主要因素是好的弹出窗口必须在用户执行某些操作之后显示,例如单击或执行其他事件,如按Enter键。
但是,您可以使用页面内弹出窗口,例如JQuery UI Dialog,所有弹出窗口拦截程序都无法阻止它,因为它只是像span或div一样的html标记。 因此,它不足以聪明地理解弹出标记内部的内容。 这应该是避免所有弹出窗口拦截程序的最佳方法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接