部分浏览器默认不允许脚本方式去跳转一个新的页面网站,认为这是一种恶意广告行为,但实质所有浏览器都是支持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跳转新窗口被拦截-解决"
最新评论