Angular JS为关闭浏览器窗口提供了干净的方法。
$window.close()
看起来很有价值,实际上它只用角度服务包裹窗口对象:
function $WindowProvider() {
this.$get = valueFn(window);
}
https://github.com/angular/angular.js/blob/master/src/ng/window.js
几年前,网络浏览器的安全更新已被禁止,现在禁止关闭未通过脚本打开的窗口,因此在Chrome或Firefox中执行$window.close()
方法会引发异常({{ 1}})
这里有很棒的SO帖子:https://stackoverflow.com/a/19768082/3775079
社区提供的解决方案是打开同一个窗口然后关闭它:
Scripts may close only the windows that were opened by it.
不幸的是,这个适用于角度代码的解决方案并不适用于我:
var popup = window.open(location, '_self', '');
popup.close();
它会导致无限循环的窗口刷新。
如何在Angular解决方案中进行安全更新后正确执行window.close方法?