2012-02-28 5 views
1

다른 확장 프로그램 (B)과 통신하는 Chrome 용 확장 프로그램 (A)을 만들고 있습니다. AB 기능을 제공하고 싶지만 전송하지 않습니다. 나는 문자열을 잘 보낼 수 있습니다.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); 
}); 

...이 코드는 정상적으로 작동합니다. 경고는 "all"이라고 표시된 상자를 표시 한 다음 해당 기능을 인쇄합니다.

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) 만 포함합니다.

한 가지 방법은 함수를 String으로 전달하고 수신 끝에서 eval을 사용하는 것입니다. 안전하지는 않지만 입니다.

* 기능이 기술적으로는 Object이지만이 문맥에서는 Object은 앞서 말한 단순 데이터 유형의 name : value 쌍을 참조합니다.

관련 문제