如何让jsd出新窗口不被拦截

如何让jsd出新窗口不被拦截,第1张

第一种、使用原生javascript的windowopen()方法(大部分情况下会被浏览自阻止)
第二种、模拟表单(form)提交,原理是指定表单的action为想要打开的URL地址,target设置为"_blank"
不过模拟表单提交的方法经很多网友反映说也会被阻止
第三种、模拟超链接(<a>)被点击,用jquery的写法如下,注意最后openLink[0]是模拟的原生DOM对象被点击的(使用Jquery对象的话没反应)
var openLink = $("");
openLinkattr('href', 'URL地址');
openLink[0]click();
这种方法个人比较推荐的,因为简单方便
第四种、利用浏览器的冒泡事件(这种方法稍微有点复杂,呵呵)
clickOpenWin: function(f){
var dataKey = "clickOpenWindataKey"
var me = $(this);
var A = medata(dataKey);
var returnData = null;
if(!A){
A = $("");
medata(dataKey, A);
Aclick(function(e){
if(returnData){
Aattr("href", returnData);
}else {
Abefore(me);
estop();
}
});
}
memouseover(function(){$(this)before(A)appendTo(A);});
memouseout(function(){Abefore($(this));});
meclick(function(){
Aattr("href", "#|");
returnData = fapply(this, arguments);
});
}
1 首先,说一下最终的效果,是实现用 “A” 包含你要触发d窗的元素,原来的click事件要返回d窗的URL 对应这一句 “returnData = fapply(this, arguments);”
2 然后就要说到d窗拦截的策略了,具体我就不说了,反正 策略里是不会拦截 “A” 本身吧
3 最后就是合成了,用A包含后,因为事件会冒泡,所以利用正常的点击,生成动态的 链接地址 给A,触发A的原始点击事件,就完成了

<html>
<head>
</head>
<body>
<script type="text/javascript">
windowonbeforeunload = function(e){
return confirm("是否关闭窗口");
}
</script>
</body>
</html>
这个是多个浏览器都支持的版本
<html>
<head>
</head>
<body>
<script type="text/javascript">
windowonbeforeunload = function(e){
if(windowevent)
windoweventreturnValue = "关闭窗口";
return false;
}
</script>
</body>
</html>
这个版本呢在Firefox下面就没有自定义的提示信息了。。。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12907087.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-28
下一篇 2023-05-28

发表评论

登录后才能评论

评论列表(0条)

保存