奇怪的行为 - 我试图在回调中打开一个新窗口 - 使用Angular但可能是一般的JS问题。
如果我这样做:
$window.open('http://google.com', '_blank');
工作正常。然而,这不是因为它被我的浏览器阻止 - 我正在使用Safari 7并检查了“阻止弹出窗口”:
Items.list(function(items) {
$window.open('http://google.com', '_blank')
});
为什么浏览器会阻止而不阻止另一个,我该如何规避?我玩setTimeout以及一些SO帖子建议在调用异步之前将$ window.open分配给变量但在这里没有用。
答案 0 :(得分:5)
当弹出窗口未打开时,弹出窗口阻止程序逻辑通常会阻止弹出窗口,这是用户操作(如点击)的直接后果。
异步发生的回调不是用户操作的直接后果 - 它在以后的某个时间并且没有直接连接到该操作(如浏览器所见),因此浏览器可能不允许它。 / p>
通常的解决方法是立即打开弹出窗口(作为用户操作的直接结果),然后在异步回调发生并且内容可用后再填充其内容。
答案 1 :(得分:0)
angular 6是否支持像javascript这样的弹出窗口?我不是在寻找模态窗口解决方案。我希望能够像使用JavaScript弹出窗口一样将窗口移至另一个屏幕。是否有任何文档?如何在Angular 5/6上进行操作,即打开一个弹出窗口