如何解决无法使用 Manifest V3 将消息响应发送回 Chrome 扩展程序中的内容脚本
我成功地从 Service Worker 后台脚本向社交 OAuth 提供者启动了 webauthflow(根据 manifest v3 要求,后台脚本现在是成熟的 Service Worker)
但是,在最简单的情况下,我无法将消息发送回我的内容脚本。
这是我的 Service Worker (background.js)
chrome.runtime.onMessage.addListener((request,sender,sendResponse) => {
if (request.message === "login") {
if (user_signed_in) {
console.log("already signed in");
} else {
chrome.identity.launchWebAuthFlow({
url: createOAuthEndpoint(),interactive: true,},function (redirect_uri) {
if (chrome.runtime.lastError) {
sendResponse({
message: "fail"
});
} else {
if (redirect_uri.includes("error")) {
sendResponse({
message: "fail"
});
} else {
//we get here but this message is never sent
sendResponse({
message: "success",profile: "blah"
});
}
}
});
}
}
return true;
});
这是我的内容脚本...(popupsignin.js)
document.querySelector('#sign-in').addEventListener('click',() => {
chrome.runtime.sendMessage({ message: 'login' },(response) => {
console.log('got the response'); //this log is never written
if (response.message === 'success'){
console.log(response.profile);
}
});
});
解决方法
结果证明代码没有问题。由于某种原因,我无处可读取回调方法中的 console.log(...) 输出。我添加了一个警报,它触发得很好。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。