gpt4 book ai didi

javascript - 2019 - 执行 php 脚本后关闭选项卡 (Chrome)

转载 作者:行者123 更新时间:2023-11-29 20:46:34 26 4
gpt4 key购买 nike

我发现了很多与此相关的问题,但大多数是 2012 年或之前的问题,而且 Google 似乎有新的安全政策,因此在 2019 年提出了这个问题。

我的 Chrome 扩展正在打开一个新选项卡并导航到一个带有多个 PHP 变量的网站。打开网站后,我的 PHP 脚本就会发挥它的魔力,完成后,我想关闭该选项卡。

问题来了:

  1. Chrome Dev Kit 抛出错误提示“脚本只能关闭它打开的窗口”
  2. 我的扩展在 JS 上运行,我认为它不能关闭标签页(或者至少我不知道如何关闭)
  3. 所有 PHP 端 echo '<script>setTimeout(function(){ window.close();}, 5000);</script>';由于更新了安全策略,解决方案不起作用

现在,人们会怎么做呢?

谢谢,A2k

最佳答案

如果您在子窗口中使用 window.opener... 或者如果您有跨域问题,使用 postMessage(...) 解决方案。

经典“window.opener 引用”解决方案:

parent.html

<script>
var childWindow = window.open("child.html","_blank");
</script>

child.html

<script>
setTimeout(function(){
window.opener.childWindow.close();
},1000);
</script>

替代“发布消息”解决方案:

(如果您遇到 CORS 跨源资源共享问题,请使用此选项。)

parent.html

<script>
window.open("child.html","_blank");
window.addEventListener('message',function(e){
if(e.data === 'CloseChildWindow')
e.source.close();
}, false);
</script>

child.html

<script>
setTimeout(function(){
window.opener.postMessage('CloseChildWindow','*');
},1000);
</script>

注意setTimeout();仅用于演示此行为,否则窗口将立即关闭。同时设置 appropriate domain parameter在 postMessage() 函数上。

关于javascript - 2019 - 执行 php 脚本后关闭选项卡 (Chrome),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54319831/

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