我正在创建一个将 iframe 注入页面的 Chrome 扩展程序。扩展在 3 个页面之间传递数据(特别是对象):正在访问的页面、iframe 内容和 background.html
我正在传递使用构造函数创建的对象,如下所示:
function url(href, anchorText, altText, linksOut){
this.href = href;
this.anchorText = anchorText;
this.altText = altText;
this.linksOut = linksOut;
};
在控制台中,以这种方式创建的对象将如下所示:
url {href: "http://www.foo.com", anchorText: "Foo", altText: "", linksOut: Array[42]}
我还可以在控制台中看到附加到对象的构造函数:
__proto__: url
constructor: function url(href, anchorText, altText, linksOut){
...
相关部分是它具有对象/构造函数的名称。当我将访问页面中的数据传递给 background.html 时,问题就来了。在这里拉起控制台,它已经失去了它的名字,变成了一个通用的(匿名的?)对象:
Object {href: "http://www.foo.com", anchorText: "Foo", altText: "", linksOut: Array[42]}
我可以看到构造函数已经丢失:
__proto__: Object
...
constructor: function Object() { [native code] }
...
那么问题来了,有没有办法在页面之间传递一个对象并保留与其构造函数的关联?