gpt4 book ai didi

javascript - 使用postMessage扩展后台页面

转载 作者:行者123 更新时间:2023-12-05 04:59:21 26 4
gpt4 key购买 nike

我正在尝试将 CryptoKey(由 SubtleCrypto.generateKey() 生成)对象从 contentscript 发送到 webextension 的后台页面。

当使用 chrome.runtime.sendMessage 发送对象时,它会丢失,因为 CryptoKey 不可字符串化(另请参见 this question )。使用 window.postMessage 将 key 传输到另一个 window 确实有效,因为此方法使用结构化克隆..

是否有类似于 postMessage 的东西可以将不可字符串化的数据发送到 webextension 的后台页面?

最佳答案

感谢@wOxxOm 的评论,我通过使用以下代码创建可访问的网络资源解决了这个问题:

window.addEventListener("message", receiveMessage, false);

function receiveMessage(event) {
chrome.extension.getBackgroundPage().postMessage(event.data, "*");
}

这是由这样的内容脚本触发的:

let iframe = document.createElement('iframe');
iframe.setAttribute('src', chrome.extension.getURL('webaccessible/index.html'));
iframe.addEventListener("load", () => {
iframe.contentWindow.postMessage(data);
})

虽然数据是包含CryptoKey 的对象。

这个数据是在后台脚本中接收的,就像你通常会收到这样的消息一样:

window.addEventListener('message',(event) => {
console.log(event);
});

关于javascript - 使用postMessage扩展后台页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63534771/

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