You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chrome App中页面重载失败,报错提示需使用target="_blank"

解决Chrome App中window.location.reload()触发的跨窗口链接错误

嘿,这个问题我之前也碰到过!你遇到的Can't open same-window link to "chrome-extension://XXXX/page.html"; try target="_blank"错误,本质是Chrome App的安全限制在搞鬼——Chrome不允许在App窗口里直接通过window.location.reload()这种方式,同窗口加载chrome-extension://协议的页面。

下面给你两个靠谱的解决方案,按需选就行:

方案1:刷新当前窗口内容

如果只是想更新当前页面的内容,不用重新创建窗口,可以在page.js里替换掉window.location.reload(),改用Chrome App的窗口API来刷新:

// 获取当前App窗口,重新加载页面URL
chrome.app.window.current().contentWindow.location.href = 'page.html';

这个方法会在当前窗口内重新加载page.html,完美避开了Chrome的协议跳转限制。

方案2:关闭当前窗口后重新创建

要是你需要完全重启页面(比如页面状态需要彻底重置),可以先关闭当前窗口,再触发onLaunched事件重新创建窗口:

  1. 在page.js里添加这段代码:
// 关闭当前窗口
chrome.app.window.current().close();
// 手动触发onLaunched事件,让background.js重新创建窗口
chrome.app.runtime.onLaunched.dispatch();
  1. 你的background.js代码不用改,因为onLaunched监听器本来就负责创建窗口,触发后会重新生成一个新的窗口加载page.html。

另外提醒下,别用chrome.runtime.reload()哦——这个方法是重新加载整个Chrome扩展,不是单个页面,会把所有App窗口都关掉重启,一般不是你想要的效果。

内容的提问来源于stack exchange,提问作者mpri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:44:34