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事件重新创建窗口:
- 在
page.js里添加这段代码:
// 关闭当前窗口 chrome.app.window.current().close(); // 手动触发onLaunched事件,让background.js重新创建窗口 chrome.app.runtime.onLaunched.dispatch();
- 你的
background.js代码不用改,因为onLaunched监听器本来就负责创建窗口,触发后会重新生成一个新的窗口加载page.html。
另外提醒下,别用chrome.runtime.reload()哦——这个方法是重新加载整个Chrome扩展,不是单个页面,会把所有App窗口都关掉重启,一般不是你想要的效果。
内容的提问来源于stack exchange,提问作者mpri
相关产品推荐
相关产品推荐

