Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 合法避免弹出窗口阻塞_Javascript - Fatal编程技术网

Javascript 合法避免弹出窗口阻塞

Javascript 合法避免弹出窗口阻塞,javascript,Javascript,是什么导致一些浏览器认为我的代码是未经请求的 我有一个网站,专门帮助人们进行互动会话。它从用户单击[开始]开始,因此这是一个同意的操作。这应该(1)打开一个弹出窗口,同时(2)将第一页重定向到一个结束页,如下所示: <head> <SCRIPT language="JavaScript"> function openwindow(){window.open("{INTERACTION}","interaction","resizable=0,width=8

是什么导致一些浏览器认为我的代码是未经请求的

我有一个网站,专门帮助人们进行互动会话。它从用户单击[开始]开始,因此这是一个同意的操作。这应该(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>

函数openwindow(){window.open(“{INTERACTION}”,“INTERACTION”,“resizable=0,width=800,height=600,status=0”);}
如前所述,这并不是试图打开一个未经请求的弹出窗口,但IE和Chrome的某些版本似乎正在这样对待它。我一直在尝试修复,最近一次是消化

在它的博宾斯评论

现在,你真的不需要问“我的主动弹出被阻止了吗?”这个问题,因为答案总是“是” — 默认情况下,所有主要浏览器都打开了弹出窗口阻止程序。最好的方法是直接点击window.open(),这几乎总是允许的。我很乐意接受这个原则,因为我只想打开弹出窗口

是什么导致一些浏览器认为我的代码是未经请求的

如果你能给我任何帮助,我将不胜感激。(正如你们可能已经猜到的,客户端不是我的包,这个话题已经困扰了我很多年了)

提前多谢(祈祷好运)
贾尔斯

对此你无能为力。一些弹出窗口拦截器仍然会阻止一切,即使是响应用户的点击。你所能做的就是建议你的用户关闭弹出窗口拦截器,或者找到一种不同的方式来做你想做的事情。一种流行的方法是div,它出现在页面上所有其他方法的顶部,如


有很多方法可以使这变得容易。

你无能为力。您可以要求用户禁用弹出窗口阻止程序,或者通过检查window.open()返回的窗口对象ref来通知他们已启用弹出窗口阻止程序

e、 g

你可以找到另一种方法,试试Brad的建议。

你有(至少?)两种选择来解决这个问题:

  • 如果您想继续使用弹出窗口,请为您的用户显示一个非常明显的警告,指示他们如何将浏览器配置为将您的域列入白名单(例如,当您获得新权限时,StackOverlow.com顶部出现的横幅,甚至是Chrome显示的用于操作的横幅,它们也是基于web的)
  • 使用iFrame并根据用户的单击加载其内容

值得一提的是,您的示例适用于所有主要浏览器。哪里不适合你?您可能仍然会遇到与更严厉的第三方弹出窗口或脚本阻止程序有关的问题,但情况总是如此。最好提供一个到您的主交互页面的正常链接,这样它仍然可以在没有弹出窗口的情况下使用。(就我个人而言,无论如何我都会使用它,因为我是众多完全鄙视它们的用户之一。)哇!谢谢你的测试。我一直收到报告说,win7上的ie9只会阻塞一条短暂的警告消息,这对大多数人来说很容易在ie9/win7 FWIW中为我工作。好的,我明白你的意思,但是这个解决方案安全吗?我们的很多用户仍然是大约IE6@giles,jQuery通常可以与IE6配合使用,我想大多数插件也可以。测试它,如果它不起作用,尝试不同的插件或改变你的方法。有趣的。。。这是否适用于所有阻塞实例。。。(如果是这样,我可以构建一个if-else语句来打开弹出窗口或返回警报?)。我不是100%肯定,但你可以试试代码。您可以显示警报或使用Brad在回答中建议的内容检查
!w
还不够。见:
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');
}