Расширение Chrome: Content Script -> Dynamic Function - PullRequest
0 голосов
/ 22 августа 2011

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

chrome.extension.onRequest.addListener(function cs_listener(request, sender, sendResponse) {
    [request.action]();
}

request.action - бла.Где функция blah () является .... и теперь она приходит ... функция!

Выдается ошибка:

Error in event handler for 'undefined': TypeError: object is not a function

Кто-то справился с этим?Я действительно не люблю переключаться для каждого нужного мне действия.

Ответы [ 2 ]

1 голос
/ 22 августа 2011

Другим способом было бы просто вызвать эту функцию с фоновой страницы, не отправляя запрос:

chrome.tabs.executeScript(null, {code: "dynamic_function_name()"});
1 голос
/ 22 августа 2011

Вы должны использовать

window[request.action]();

в

[request.action]();

создает массив , содержащий request.action, и пытается вызвать его, что приводит к ошибке. window[request.action](); получает свойство с именем request.action из window и вызывает его.

Вы также можете проверить, определено ли свойство первым:

if(typeof window[request.action] == "function")
  window[request.action]();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...