如何在安全更新后关闭AngularJS中的浏览器窗口

时间:2016-07-11 14:57:58

标签: javascript angularjs

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方法?

0 个答案:

没有答案