我想在内容脚本(Chrome扩展程序)上调用动态函数。但常见的方法不起作用:
chrome.extension.onRequest.addListener(function cs_listener(request, sender, sendResponse) {
[request.action]();
}
请求。反应是等等。函数blah()是....现在它来了......一个函数!
抛出错误:
Error in event handler for 'undefined': TypeError: object is not a function
有人克服了这个?我真的不喜欢为我需要的每一个动作做出改变。
答案 0 :(得分:1)
你必须使用
window[request.action]();
作为
[request.action]();
创建一个包含request.action
的数组,并尝试调用它,这会导致错误。 window[request.action]();
从request.action
获取名为window
的媒体资源,并将其调用。
您可能还想检查是否首先定义了属性:
if(typeof window[request.action] == "function")
window[request.action]();
答案 1 :(得分:1)
另一种方法是从后台页面调用该函数,而不发送请求:
chrome.tabs.executeScript(null, {code: "dynamic_function_name()"});