window.open为什么被拦截
部分浏览器默认不允许脚本方式去跳转一个新的页面网站,认为这是一种恶意广告行为,但实质所有浏览器都是支持window.open的。在百度搜索好久,有些说可以通过新建a标签,模拟点击事件触发来实现,但是测试发现都实现不了,照样被浏览器拦截(在此严重批评‘CSDN博客’这个垃圾平台,没有几篇有营养的文章,互相复制粘贴也就算了,还自己没验证就互相转),最后发现了个折中的办法,在此分享给大家!
方式一
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| <!DOCTYPE html >
<html lang ="en">
<head >
<meta charset ="UTF-8">
<title >跳转测试 </title >
</head >
<body >
<a href ="javascript:;" class="btn">测试跳转 </a >
</body >
<script src ="http://code.jquery.com/jquery-2.1.1.min.js"></script>
<script >
$ ('.btn').click (function () {
var newTab = window .open ();//打开新窗口
console .log(newTab )
setTimeout (function () {
newTab .location .href = "http://www.baidu.com";
}, 2000);
})
</script>
</html > |
方式二
在jQuery中,使用a.click(), a.trigger('click')等都不会引起链接默认事件被执行。下面的代码模拟生成了链接点击事件,然后执行默认打开链接的事件。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| <html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>Title</title>
</head>
<body>
<input type="button" value="Go to Apple" id="btn">
</body>
<script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
<script>
$(function() {
$("#btn").click(function() {
var a = $("<a href='http://www.apple.com' target='_blank'>Apple</a>").get(0);
var e = document.createEvent('MouseEvents');
e.initEvent( 'click', true, true );
a.dispatchEvent(e);
});
});
</script>
</html> |
小结
大家把自己想要兼容的浏览器都测测吧,我目前只是测了windows系统上的谷歌、火狐、猎豹、360,其他浏览器都没测过,也许还存在兼容问题。
「梦想一旦被付诸行动,就会变得神圣,如果觉得我的文章对您有用,请帮助本站成长」
共 0 条评论关于"关于js页面window.open跳转新窗口被拦截-解决"
最新评论