JS打开新窗口防止被浏览器阻止的方法
2015-01-03 10:51
543 查看
本文实例讲述了JS打开新窗口防止被浏览器阻止的方法。分享给大家供大家参考。具体分析如下:
用传统的window.open()方式打开新窗口,会被浏览器阻止,那么,我们如何才能让JS打开新窗口不被浏览器阻止呢?其实办法还是有的,这里我们就来分析一下如何解决这个问题
我最近也遇到了这样的问题,所以就把弹出新窗口的方法分享给大家。欢迎大家补充哦...
第一种、使用原生javascript的window.open()方法(大部分情况下会被浏览自阻止)
第二种、模拟表单(form)提交,原理是指定表单的action为想要打开的URL地址,target设置为"_blank"
var s=document.getElementById("hiddenlink");
s.submit();
不过模拟表单提交的方法经有可能也会被阻止...
第三种、模拟超链接(<a>)被点击
当按下一个按钮时,想打开一个新的标签页,可以模拟链接被按下,然后打开链接。
但是在jQuery中,使用a.click(), a.trigger('click')等都不会引起链接默认事件被执行。
下面的代码模拟生成了链接点击事件,然后执行默认打开链接的事件。
不过值得注意的一点是:对应IE浏览器,只有IE9以上才支持document.createEvent函数,所以以下代码在IE执行的话要IE9以上才行
var e = document.createEvent('MouseEvents');
e.initEvent('click', true, true);
a.dispatchEvent(e);
第四种、利用浏览器的冒泡事件(转载来的)
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的原始点击事件,就完成了。
希望本文所述对大家的javascript程序设计有所帮助。
您可能感兴趣的文章:
相关文章推荐
- 用JS打开新窗口,防止被浏览器阻止的方法
- JS打开新窗口防止被浏览器阻止的方法[转]
- 用JS打开新窗口,防止被浏览器阻止的方法
- JS打开新窗口防止被浏览器阻止的方法
- 用JS打开新窗口,防止被浏览器阻止的解决方法
- JS打开新窗口防止被浏览器阻止的方法
- ajax打开新窗口防止被浏览器阻止问题
- window.open打开新窗口,防止浏览器阻止弹窗解决办法
- ajax请求 用新窗口打开 防止浏览器阻止和拦截
- ajax请求之后 用新窗口打开 防止浏览器阻止和拦截
- js 弹出窗口 防止拦截,突破阻止,保存后打开
- js弹出新窗口而不会被浏览器阻止的方法
- js打开新窗口被浏览器拦截的解决方法
- js页面跳转 和 js打开新窗口方法
- js页面跳转 和 js打开新窗口 方法
- 使用C#打开新窗口关闭旧窗口的方法;winform中防止重复打开多个相同子窗体
- 让网站所有链接打开方式都在浏览器新窗口中打开的方法
- 解决JS弹出新窗口被浏览器阻止的解决方案
- js打开新窗口的各种方法
- js打开新窗口各种方法