【发布时间】:2020-12-30 12:00:00
【问题描述】:
我正在尝试通过 background.js 将来自内容脚本的消息传递到我在 chrome 扩展中的 background.js 中弹出的窗口,但引用了我在 background.js 中弹出的窗口,在 background.js 的事件处理程序中,会导致跨域权限问题。
这是有问题的 background.js 代码:
// background.js
var win;
chrome.browserAction.onClicked.addListener(function (tab) {
win = window.open('popup.html', '', 'width=1530px,height=950px');
// listen to messages from inject.js
chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
console.log(win); // Any reference to "win" causes the error
});
chrome.tabs.executeScript(tab.id, {file: 'jquery-latest.min.js'});
chrome.tabs.executeScript(tab.id, {file: 'inject.js'});
});
我从 background.js 收到此错误:
事件处理程序中的错误:错误:阻止具有来源“chrome-extension://apjalhbpkiomjnmiilehodbmfcebfiib”的框架访问跨域框架。 在控制台.log () 在 chrome-extension://apjalhbpkiomjnmiilehodbmfcebfiib/background.js:10:13
似乎仅仅引用变量win导致了跨源问题,我不明白,因为我在background.js中声明了win并在background.js中引用了它,尽管是在事件处理程序中。
这是一个重复问题的最小扩展(错误将出现在后台页面的控制台中):https://www.dropbox.com/sh/8ge0v398xzq04th/AACqjNH4h9QS_LaPwCZYK-iwa?dl=0
【问题讨论】:
-
是
popup.html扩展的一部分 -
是的,它在同一个解压目录中。窗口打开并成功渲染。
标签: javascript google-chrome google-chrome-extension