在Chrome扩展程序之间共享功能

时间:2012-02-28 15:40:34

标签: json google-chrome google-chrome-extension

我正在为与另一个分机(A)通信的Chrome进行扩展(B)。我希望AB提供一个函数,但它不会发送。我可以很好地发送字符串。

A具有以下代码。 rect是此代码中的函数。

chrome.extension.onRequestExternal.addListener(
    function(request, sender, sendResponse) {
       obj = {}
       obj.permisions = "all"
       obj.rect = Rect
       alert(obj.permisions+","+obj.rect)
       sendResponse(obj); 
});

...这段代码很好用。警报显示一个显示“全部”的框,然后打印出该功能。

B包含以下代码。

chrome.extension.sendRequest(ext[i].id, {}, function(lib) {
    alert(lib.permisions+","+lib.rect)
});

这个警报显示“全部,未定义”。函数不能在扩展名之间传递吗?

1 个答案:

答案 0 :(得分:4)

虽然您当然可以communicate between extensions,但您只能传递有效的JSON。不幸的是,有效的JSON只包含简单的数据类型(String,Number,Boolean,Array,Object *或Null)。

一种方法是将函数作为String传递,并在接收端使用eval。可能不安全,但 可行。

*虽然函数在技术上是Object,但在此上下文中Object引用上述简单数据类型的名称:值对。