Расширение 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()"});