但是,这里每次打开新窗口(Opera 16和Google Chrome 29)
<input type="button" value="Open" onclick="cb1()"> <script type="text/javascript"> function cb1() { setTimeout(wo,1000); //simple async } function wo() { var a = window.open("http://google.com","w2"); a.focus(); } </script>
(哈哈,这是Open a URL in a new tab (and not a new window) using JavaScript的答案).
解决方法
该问题与浏览器弹出窗口阻止程序有关,阻止编程窗口打开.浏览器允许从主线程上发生的实际用户点击打开窗口.同样,如果你在主线程上调用window.open,它将工作,如上所述.根据Open a URL in a new tab (and not a new window) using JavaScript的这个答案,如果您使用Ajax调用,并希望成功打开窗口,则需要设置async:false,因为这将保持主线程上的所有内容.
我们无法控制我们的Ajax调用,但发现另一种解决方案由于相同的原因而起作用.警告,这是有点黑客,可能不适合你给你的约束.在Open a URL in a new tab (and not a new window) using JavaScript的不同答案的评论中,您可以在调用setTimeout之前打开窗口,然后在延迟功能中更新它.有几种方法来做到这一点.在打开窗口时,请保持对窗口的引用,w = window.open …并设置w.location或打开目标,window.open(”,’target_name’)在延迟功能中打开target,window.open(‘your-url’,’target_name’),并依赖浏览器保留引用.
原文地址:https://www.jb51.cc/js/153951.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。