js打开新窗口被拦的问题。

在网上也找了很多资料,创建a标签模拟用户点击操作还是会被拦截,我发现的问题就是 如果我点击后马上弹出新窗口是不会被拦截的 但是我们目前的需求是 打开之前会调用一个接口 等接口成功返回再打开新窗口 这种情况下就会被拦截 请问有什么好的方法解决吗?

阅读 4.4k
6 个回答

建议别搞黑科技,既然浏览器不希望你这样做,就意味着今天能成功的黑科技可能过一阵之后也不能用了。

模拟a标签点击,接口拿到地址创建a标签添加到body中并用js点击销毁。

var a=document.createElement('a');
    a.href='https://www.baidu.com'//要写绝对路径
    a.target='_blank';
    document.body.appendChild(a)
    a.click();
新手上路,请多包涵

拦截原因:JS脚本触发a链接或者form提交,都会被浏览器拦截,这是浏览器的安全防御机制,你还可以去把浏览器的设置里去允许无条件打开新窗口。
这个方法不会被拦截:你在接口请求成功后,先var openNewWindow = window.open("", "_blank");打开一个空的新页面,然后把你的url给这个新页面重定向openNewWindow.location.href = "###";

还有一种方法:将ajax请求改成同步,请求返回后,用window.open(url)就可以了

可以先在页面上写一个a标签,然后动态去改变他的url,最后在用js去模拟点击事件,这样就可以了。(刚才试了一下,好像也被拦截了)

新手上路,请多包涵

楼主找到答案了么,求支招。我也是想用JS自动点击超链接,然后打开一个新窗口,而不被拦截。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题