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

问题描述:

我正在为与其他扩展程序(B)通信的Chrome扩展程序(A)。我想要A提供B函数,但它不会发送。我可以发送字符串很好。Chrome扩展程序之间的共享功能

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) 
}); 

此处的警报显示“all,undefined”。函数不能在扩展之间传递?

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

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

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