javascript window.open 从回调

2024-02-17

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>

(哈哈,这是我的答案使用 JavaScript 在新选项卡(而不是新窗口)中打开 URL https://stackoverflow.com/questions/4907843/open-url-in-new-tab-using-javascript?answertab).

如何在此处的选项卡(浏览器默认)中打开?


我们遇到了同样的问题并四处寻找答案。我们发现在我们的情况下有效的方法和精华如下:

该问题与浏览器弹出窗口阻止程序阻止程序化窗口打开有关。浏览器允许通过主线程上发生的实际用户点击打开窗口。同样,如果您在主线程上调用 window.open ,它将起作用,如上所述。根据这个答案使用 JavaScript 在新选项卡(而不是新窗口)中打开 URL https://stackoverflow.com/questions/4907843/open-a-url-in-a-new-tab-using-javascript#13158856如果您使用 Ajax 调用并希望在成功时打开窗口,您需要设置async: false这是有效的,因为这会将所有内容保留在主线程上。

我们无法像这样控制我们的 Ajax 调用,但由于相同的原因找到了另一个有效的解决方案。警告,它有点老套,考虑到您的限制,可能不适合您。由对不同答案的评论提供使用 JavaScript 在新选项卡(而不是新窗口)中打开 URL https://stackoverflow.com/questions/4907843/open-a-url-in-a-new-tab-using-javascript#comment-32382848你打电话前打开窗户setTimeout然后在延迟函数中更新它。有几种方法可以做到这一点。要么在打开窗口时保留对窗口的引用,w = window.open...并设置w.location或以目标打开,window.open('', 'target_name'),在该目标中打开的延迟函数中,window.open('your-url', 'target_name'),并依赖浏览器保留引用。

当然,如果用户设置了在新窗口中打开链接,这不会改变这一点,但这对OP来说不是问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

javascript window.open 从回调 的相关文章

随机推荐