唯品秀前端博客

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,其他浏览器都没测过,也许还存在兼容问题。

本站所有文章、图片、资源等如无特殊说明或标注,均为来自互联网或者站长原创,版权归原作者所有;仅作为个人学习、研究以及欣赏!如若本站内容侵犯了原著者的合法权益,可联系我们进行处理,邮箱:343049466@qq.com
赞(5) 打赏
谢谢你请我吃鸡腿*^_^*

支付宝扫一扫打赏

微信扫一扫打赏

上一篇:

下一篇:

相关推荐

0 条评论关于"关于js页面window.open跳转新窗口被拦截-解决"

表情

最新评论

    暂无留言哦~~