gpt4 book ai didi

javascript - 对象类型在消息传递中丢失

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:53:30 25 4
gpt4 key购买 nike

我正在开发 Chrome 扩展程序,但遇到以下问题。当某个事件发生时,我的后台页面使用chrome.tabs.create API 创建一个新的标签页(页面)并发送一个对象。

发送的对象(称为项目)是对象列表,具有称为项目的特定类(原型(prototype))。

这里是一些代码:

// in background.html
chrome.tabs.create({index: 0, url: "results.html"}, function(tab) {
chrome.tabs.sendRequest(tab.id, {'items': itemsList}, function(response) {
console.log(response.farewall);
});
});

另一方面,在新创建的页面中,我收到发送的对象

// newpage.html
chrome.extension.onRequest.addListener(
function(request, sender, sendResponse) {
console.dir(request.items);
sendResponse({});
}
);

问题是,当我收到对象列表时,在 newpage.html 中,对象类型丢失了。事实上,在新的 background page 中使用 console.dir()itemsList 中的对象类型被正确报告,但在接收到的项目中没有在 newpage.html 中列出对象。

我可以通过字符串手动序列化 background.html 中的数据,并在 newpage.html 中手动反序列化,但我想知道是否有是一种更好的方式来负担这个并防止列表中的对象类型(即 Item)丢失。

最佳答案

当通过请求传递对象时,Chrome 要求它是“JSON 可序列化的”,这暗示它在传输之前被编码为 JSON 字符串,作为字符串传输,然后解码回来。并且 JSON 不支持函数序列化。

关于javascript - 对象类型在消息传递中丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7320588/

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