Совместное использование функций между расширениями Chrome - PullRequest
1 голос
/ 28 февраля 2012

Я делаю расширение (A) для Chrome, которое связывается с другим расширением (B). Я хочу A предоставить B функцию, но она не будет отправлена. Я могу отправлять строки просто отлично.

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 Ответ

4 голосов
/ 28 февраля 2012

Хотя вы, безусловно, можете общаться между расширениями , вы можете передать только действительный JSON. К сожалению, действительный JSON включает только простые типы данных (String, Number, Boolean, Array, Object * или Null).

Один из способов сделать это - передать функцию в виде строки и использовать eval на принимающей стороне. Может быть небезопасно, но возможно выполнимо.

* Хотя технически функция является Object, в этом контексте Object относится к парам имя: значение вышеупомянутых простых типов данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...