2012-02-28 89 views
1

我正在爲與其他擴展程序(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」。函數不能在擴展之間傳遞?

回答

4

雖然你當然可以communicate between extensions,你只能通過有效的JSON。不幸的是,有效的JSON只包含簡單的數據類型(String,Number,Boolean,Array,Object *或Null)。

一種方法是將函數作爲字符串傳遞,並在接收端使用eval。可能是不安全的,但可行。

*雖然函數在技術上是Object,但在這種情況下,Object引用上述簡單數據類型的名稱:值對。

相關問題