由于安全问题,Razor JavaScript 互操作不会出现“window.close()”

Razor JavaScript Interop won't "window.close()" because of security issue

提问人:NovaDev 提问时间:11/14/2023 最后编辑:RenaNovaDev 更新时间:11/14/2023 访问量:32

问:

我有一个剃须刀页面,它有一个用于关闭浏览器窗口的按钮,当应用程序启动时,它在初始浏览器窗口中工作正常,因为根据文档,如果 1) 它是浏览器历史记录中的第一页或 2) 它使用打开它的相同脚本关闭窗口,您可以以这种方式关闭窗口。window.close()

我的页面不是通过脚本打开的,而是通过启动应用,然后导航到另一个页面打开的。一旦我点击第二页,就会触发错误。window.close()Scripts may close only the windows that were opened by them

一旦我进入不同的页面,如何强制关闭我的浏览器窗口?

asp.net-core 剃刀页

评论

0赞 Ruslan 11/14/2023
也许可以考虑在 iframe 中呈现弹出窗口的内容,并让父级侦听来自 iframe 的消息,以便在窗口准备就绪时关闭窗口......

答:

0赞 Rena 11/14/2023 #1

错误消息非常明确,出于安全原因,浏览器限制了关闭未由 JavaScript 打开的窗口或选项卡的能力。

确保您不包含任何链接:<a>

<a id="navigateButton">Navigate to New Page</a>
<script>
   
    document.getElementById('navigateButton').addEventListener('click', function () {
        window.open("/Home/Privacy", "_blank");
        window.close();
    });
</script>