window.open浏览器弹出新窗口被拦截—原因分析和解决方案
最近在做项目的时候碰到了使用window.open被浏览器拦截的情况,在本机实验没问题,到了服务器就被拦截了,火狐有拦截提示,360浏览器拦截提示都没有,虽然在自己的环境可以对页面进行放行,但是对用户来说,不能要求用户都来通过拦截。何况当出现拦截时,很多小白根本不知道发生了啥,不知道在哪里看被拦截的页面,百思不得其解,后来查了一下,各家浏览器支持的不一样。 ?
? 使用了一个可定制弹出窗口的外观、尺寸大小、弹出位置以适应该页面的window.open()方法,代码如下: <SCRIPT LANGUAGE="java script:> 原因分析 解决方案: function newWin(url,id) { var a = document.createElement(‘a‘); a.setAttribute(‘href‘,url); a.setAttribute(‘target‘,‘_blank‘); a.setAttribute(‘id‘,id); // 防止反复添加 if(!document.getElementById(id)) { document.body.appendChild(a); } a.click(); } ? 2、使用form的submit方法打开一个页面 $("#tijiaos").attr(‘target‘,‘_blank‘); $("#tijiaos").submit(); ? 大家注意,以上两种方法不适合放在ajax的回调函数中,如果放在回调函数中,依然会被浏览器拦截。 3、终极解决方案–先弹出窗口,然后重定向 var newWin = window.open(‘loading page‘); ? 以上方法其实是打开了两个地址,所以建议大家打开第一个地址的时候给出一个类似‘当前页面正在加载中,请稍后。。’的简单提示页,这样可以避免打开两次真正的目标页面,让用户察觉到页面的重定向。 补充: JS打开新窗口的2种方式 1.超链接<ahref="http://www.aspzz.cn" title="编程之家">Welcome</a> 等效于js代码 window.location.href="http://www.aspzz.cn";????//在同当前窗口中打开窗口 ? 2.超链接<ahref="http://www.aspzz.cn" title="编程之家"target="_blank">Welcome</a> 等效于js代码 window.open("http://www.aspzz.cn");????????????????//在另外新建窗口中打开窗口 3、关闭新窗口: this.window.opener =null;?? window.close(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- static – 在页面之间共享数据的最佳实践
- Windows – Euler问题的性能问题和Int64类型的递归
- Branch policies on Azure Repos
- 在Windows安装MySQL
- windows-mobile – 如何在Windows Mobile 6.0中将Check Box
- windows – 在我的应用程序激活之前检测哪些窗口处于活动状
- 如何将具有UTF-8文件名的文件复制到Windows上的Perl中的另一
- windows-server-2008 – 域控制器移出域控制器OU后会出现什
- 在Windows资源管理器上下文菜单中添加分隔符(不在子菜单中)
- windows-7 – Windows 7如何检测我的交换机?