最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
JS打开新窗口如何防止被浏览器阻止
时间:2014-12-29 编辑:简简单单 来源:一聚教程网
我最近也遇到了这样的问题,所以就把弹出新窗口的方法分享给大家。欢迎大家补充哦...
第一种、使用原生javascript的window.open()方法(大部分情况下会被浏览自阻止)
第二种、模拟表单(form)提交,原理是指定表单的action为想要打开的URL地址,target设置为"_blank"
document.getElementById("msgTxt").innerHTML="
var s=document.getElementById("hiddenlink");
s.submit();
不过模拟表单提交的方法经有可能也会被阻止...
第三种、模拟超链接()被点击
当按下一个按钮时,想打开一个新的标签页,可以模拟链接被按下,然后打开链接。
但是在jQuery中,使用a.click(), a.trigger('click')等都不会引起链接默认事件被执行。
下面的代码模拟生成了链接点击事件,然后执行默认打开链接的事件。
不过值得注意的一点是:对应IE浏览器,只有IE9以上才支持document.createEvent函数,所以以下代码在IE执行的话要IE9以上才行
var a = $("test").get(0);
var e = document.createEvent('MouseEvents');
e.initEvent('click', true, true);
a.dispatchEvent(e);
第四种、利用浏览器的冒泡事件(转载来的)
代码如下 | 复制代码 |
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); }); } |
1). 首先,说一下最终的效果,是实现用 “A” 包含你要触发弹窗的元素,原来的click事件要返回弹窗的URL 对应这一句 “returnData = f.apply(this, arguments);”
2). 然后就要说到弹窗拦截的策略了,具体我就不说了,反正 策略里是不会拦截 “A” 本身吧
3). 最后就是合成了,用A包含后,因为事件会冒泡,所以利用正常的点击,生成动态的 链接地址 给A,触发A的原始点击事件,就完成了
相关文章
- 兼容所有浏览器的浮动窗口js特效 05-22
- js 兼容各种浏览器的背景变暗可拖动窗口 07-19
- HTML简单购物数量小程序代码展示 10-31
- html canvas实现弹幕功能 10-31
- HTML中空格表示的意义 10-31
- html area标签解读 10-31