是什么原因导致某些浏览器将我的代码视为未经请求的?
我有一个致力于帮助人们进行互动会话的网站。它从用户单击[开始]开始,因此这是一个同意的操作。这应该(1)打开弹出窗口,同时(2)将第一页重定向到结束页面,如下所示:
<head>
<SCRIPT language="JavaScript">
function openwindow(){window.open("{INTERACTION}","interaction","resizable=0,width=800,height=600,status=0");}</SCRIPT>
</head>
<body>
<FORM action="end.php" method="{METHOD}" >
<input type="submit" class="button"
onClick="javascript: openwindow()"
value="Begin" />
</FORM>
</body>
如上所述,这不是试图打开一个未经请求的弹出窗口,但IE和Chrome的某些版本似乎正在处理它。我一直试图修复,最近消化this post。
在其中Bobince评论
这些天,你真的不需要问“我的主动弹出窗口被阻止了吗?”,因为答案总是“肯定” - 所有主流浏览器都默认打开弹出窗口阻止程序。最好的方法是只对window.open()响应直接点击,这几乎总是允许的。我很乐意接受这个原则,因为我只想让我的弹出窗口打开。
是什么原因导致某些浏览器将我的代码视为未经请求的?
我很感激你能给我的任何帮助。 (正如你可能已经猜到的那样,客户端不是我的包,这个话题一直困扰着我多年。)
非常感谢(手指交叉) 贾尔斯
答案 0 :(得分:6)
你无能为力。您可以通过检查window.open()
返回的窗口对象引用来禁止弹出窗口阻止程序或通知它们弹出窗口阻止程序。e.g。
var w = window.open('http://domain.com');
if(!w) {
//an alert in this example
alert('oops..seems like a pop-up blocker is enabled. Please disable');
}
你可以找到另一种方式并尝试布拉德的建议。
答案 1 :(得分:4)
你无能为力。即使响应用户点击,一些弹出窗口阻止程序仍会阻止所有内容。您可以做的最好的事情是建议您的用户关闭弹出窗口阻止程序,或者找到一种不同的方式来执行您想要执行的操作。一种流行的方法是在您的网页上显示在所有其他网页上的div,例如Lightbox。
有many jQuery plugins使这很容易。
答案 2 :(得分:0)
你有(至少?)2个选项可以解决这个问题: