3
我正在研究Chrome扩展,并遇到以下问题。 当某个事件发生时,我的背景页面使用chrome.tabs.create
API创建一个新选项卡(页面)并发送一个对象。消息传递中丢失了对象类型
发送的对象(称为项目)是一个对象的列表,具有称为项目的特定类(原型)。
这里是一些代码:
// 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
手动反序列化,但我想知道是否有更好的办法承受这一点,并防止在对象类型(即项目)该列表丢失。
如果'itemsList'已经是一个json对象,为什么不传递没有''items''键的对象呢?多数民众赞成在我通常这样做,我可以直接在接收端使用'request.item_name'访问对象项目...也许我误解了你的问题? –