Расширение Chrome: Content Script -> Dynamic Function

Я хотел бы вызвать динамическую функцию в скрипте содержимого (расширение 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 ответа

Решение

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

window[request.action]();

как

[request.action]();

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

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

if(typeof window[request.action] == "function")
  window[request.action]();

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

chrome.tabs.executeScript(null, {code: "dynamic_function_name()"});
Другие вопросы по тегам