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
引用上述简单数据类型的名称:值对。