用JS打开新窗口,防止被浏览器阻止的解决方法
来源:互联网 发布:js cookie 编辑:程序博客网 时间:2024/05/18 01:24
我们平时开发web前端或者使用JS的朋友都会遇到需要打开新窗口的情况,使用传统的window.open(),会被大多数浏览器拦截,这是因为现在大部分浏览器都有弹出窗口拦截功能,所以window.open()不再那么好用了。
我最近也遇到了这样的问题,所以就把弹出新窗口的方法分享给大家。欢迎大家补充哦...
第一种、使用原生javascript的window.open()方法(大部分情况下会被浏览自阻止)
第二种、模拟表单(form)提交,原理是指定表单的action为想要打开的URL地址,target设置为"_blank"
<span style="font-size:14px;">document.getElementById("msgTxt").innerHTML="<form id='hiddenlink' action='"+sHref+"' target='_blank'><input type='hidden' name='object' value='"+objValue+"'></form>"; var s=document.getElementById("hiddenlink"); s.submit();</span>不过模拟表单提交的方法经有可能也会被阻止...
第三种、模拟超链接(<a>)被点击
当按下一个按钮时,想打开一个新的标签页,可以模拟链接被按下,然后打开链接。
但是在jQuery中,使用a.click(), a.trigger('click')等都不会引起链接默认事件被执行。
下面的代码模拟生成了链接点击事件,然后执行默认打开链接的事件。
不过值得注意的一点是:对应IE浏览器,只有IE9以上才支持document.createEvent函数,所以以下代码在IE执行的话要IE9以上才行
<span style="font-size:14px;"> var a = $("<a href='http://www.test.com' target='_blank' >test</a>").get(0); var e = document.createEvent('MouseEvents'); e.initEvent('click', true, true); a.dispatchEvent(e);</span>
第四种、利用浏览器的冒泡事件(转载来的)
<span style="font-size:14px;"> clickOpenWin: function(f){ var dataKey = "clickOpenWin.dataKey" var me = $(this); var A = me.data(dataKey); var returnData = null; if(!A){ A = $(""); me.data(dataKey, A); A.click(function(e){ if(returnData){ A.attr("href", returnData); }else { A.before(me); e.stop(); } }); } me.mouseover(function(){$(this).before(A).appendTo(A);}); me.mouseout(function(){A.before($(this));}); me.click(function(){ A.attr("href", "#|"); returnData = f.apply(this, arguments); }); }</span>
1). 首先,说一下最终的效果,是实现用 “A” 包含你要触发弹窗的元素,原来的click事件要返回弹窗的URL 对应这一句 “returnData = f.apply(this, arguments);”
2). 然后就要说到弹窗拦截的策略了,具体我就不说了,反正 策略里是不会拦截 “A” 本身吧
3). 最后就是合成了,用A包含后,因为事件会冒泡,所以利用正常的点击,生成动态的 链接地址 给A,触发A的原始点击事件,就完成了
1 0
- 用JS打开新窗口,防止被浏览器阻止的解决方法
- 用JS打开新窗口,防止被浏览器阻止的方法
- 用JS打开新窗口,防止被浏览器阻止的方法
- ajax请求 用新窗口打开 防止浏览器阻止和拦截
- js打开新窗口被浏览器拦截的解决方法
- window.open打开新窗口,防止浏览器阻止弹窗解决办法
- ajax请求之后 用新窗口打开 防止浏览器阻止和拦截
- 解决JS弹出新窗口被浏览器阻止的解决方案
- 解决JS弹出新窗口被浏览器阻止的解决方案
- 解决JS弹出新窗口被浏览器阻止的解决方案
- 解决JS弹出新窗口被浏览器阻止的解决方案
- js另开新窗口被浏览器阻止解决方案
- js打开新窗口,浏览器禁止!
- 在阻止打开新窗口的环境下打开一个新窗口
- Response.Redirect新窗口打开,不会被阻止
- JS 浏览器打开新窗口, 非tab
- JS 打开新窗口的方法
- js打开新窗口的方式
- 面向对象一
- GDI+ GetEncoderClsid
- Android基础知识【项目实训-登录与个人信息及样式背景】【7】
- instancetype 对比 id 的好处。
- Android Studio 报错:Failed to find:com.android.support:appcompat-v7:21.+
- 用JS打开新窗口,防止被浏览器阻止的解决方法
- 好几天来没写了。不知道该说什么好。
- c,c++输入流
- asp.net中js前台为span或后台lable,或Literal控件赋值
- 关于在Spring中注册自定义的PropertyEditor
- uc/os-II的内存改进与实现TLSF算法的详解,移植实现(二)
- Axis2 and CXF的比较
- C++中,malloc/free和new/delete的区别
- android attr到theme的内在关系