2012-02-05 31 views
1

这也许是同一部分下的“内容不能识别的变量”的副本。我从那个问题的答案中得到了部分查询。是的,我知道在addon上下文中访问contentScript变量,反之亦然?

内容脚本上下文与插件脚本上下文完全断开连接。内容脚本是在文档的上下文中运行的,而附加脚本则不是。

但这是否意味着我们永远不能在插件脚本上下文中访问内容脚本上下文中的变量?如果以任何方式我们可以访问它们,请让我知道。我的需求需要将对象作为参数发送给另一个脚本(data/utilities.js)中的函数,并可能获取返回的对象。在做前者方面没有任何困难,但我坚持前述背景问题的后者。我能够从内容脚本上下文返回值,但无法在插件上下文中访问相同的值。任何人都可以请帮助我一个这样的小例子?

PS我可以在那里讨论它,但我读到,我不应该因为这不是一个论坛。

回答

1

您无法直接从插件脚本上下文直接访问内容脚本中的变量。

:您 可以使用

self.port.emit('send-some-var', some_var)

你会再通过监听相同的事件接收的附加脚本变量的值传递变量回到附加从内容脚本

worker.port.on('send-some-var', function(data) { console.log(data) })

但是,主要的限制是传递的数据必须是JSON序列化的,所以你不能有方法等复杂的对象。

+0

我已经看过这段代码,但不明白它当时的实际情况。无论如何,我会试试看。 – mystarrocks 2012-02-07 04:58:43

+0

编辑:>你必须确保有效载荷可以序列化为JSON。这意味着它需要是一个字符串,数字,布尔值,空值,JSON序列化值的数组,或者其属性值本身是JSON序列化的对象。这意味着你不能发送函数,如果对象包含方法,它们将不会被编码。正如你所说,这是来自API。所以没有办法将data/util.js中的方法的值返回到addon上下文中? – mystarrocks 2012-02-07 06:05:44

+0

没有直接的方式,没有。您需要如上所述发送数据。 – canuckistani 2012-02-08 14:50:09

相关问题