gpt4 book ai didi

angularjs - $window.open 在 Firefox 上抛出 $apply 错误

转载 作者:行者123 更新时间:2023-12-04 23:47:48 26 4
gpt4 key购买 nike

我有一个基本由

组成的函数
var onclick = function() {
$window.open(url, "_blank", 'location=yes');
}

不过,在 Firefox 上,当我点击时,我得到:

错误:[$rootScope:inprog] $apply already in progress

这是一个很常见的问题,通常通过将整个问题放在 $timeout() block 中来解决。

除此之外,超时调用 $window.open() 会激活弹出窗口拦截器!我需要一些方法来完成同样的事情,而不退出线程。

最佳答案

尝试:

var onclick = function() {
if($scope.$root.$$phase) {
$timeout(function() {
$window.open(url, "_blank", 'location=yes');
},0,false);
} else {
$window.open(url, "_blank", 'location=yes');
}
}

但是,您有重复的 $window.open 参数。您可以让您的代码做得更好:

var onclick = function() {
var windowArgs = [url, "_blank", 'location=yes'];

if($scope.$root.$$phase) {
$timeout(function() {
$window.open.apply($window,windowArgs);
},0,false);
} else {
$window.open.apply($window,windowArgs);
}
}

关于angularjs - $window.open 在 Firefox 上抛出 $apply 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32946154/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com