javascript window.open从回调

前端之家收集整理的这篇文章主要介绍了javascript window.open从回调前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
从主线程调用的window.open()默认打开新选项卡.

但是,这里每次打开新窗口(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的答案).

如何在标签页中打开(按浏览器默认)?

解决方法

我们遇到了同样的问题,并在SO周围寻找答案.我们发现在我们的情况下工作,蒸馏智慧如下:

该问题与浏览器弹出窗口阻止程序有关,阻止编程窗口打开.浏览器允许从主线程上发生的实际用户点击打开窗口.同样,如果你在主线程上调用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’),并依赖浏览器保留引用.

当然,如果用户的设置在新窗口中打开链接,这不会改变,但这不是OP的问题.

猜你在找的JavaScript相关文章