Google chrome extension Chrome扩展:内容脚本->;动态函数

Google chrome extension Chrome扩展:内容脚本->;动态函数,google-chrome-extension,request,dynamic-function,Google Chrome Extension,Request,Dynamic Function,我想在内容脚本(Chrome扩展)上调用一个动态函数。但通常的方法不起作用: chrome.extension.onRequest.addListener(function cs_listener(request, sender, sendResponse) { [request.action](); } 请求。行动是废话。函数blah()是一个…现在它来了…一个函数 抛出错误: Error in event handler for 'undefined': TypeError: ob

我想在内容脚本(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
有人克服了吗?我真的不喜欢对我需要的每一个动作都进行切换。

你必须使用

window[request.action]();
作为

创建一个包含
请求.action
的数组,并尝试调用该数组,从而导致错误<代码>窗口[请求.操作]()从
窗口
获取名为
request.action
的属性,并调用该属性

您可能还想检查是否首先定义了属性:

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

另一种方法是只从后台页面调用该函数,而不发送请求:

chrome.tabs.executeScript(null, {code: "dynamic_function_name()"});

是的,窗口[请求.操作]();作品奇怪,我以前试过,但没用。向打字错误问好。无论如何,谢谢!这也可以,但有一个限制。您不能将内容脚本的响应发送到后台脚本。@Johnny True,您仍然可以通过初始化请求来发送结果。
chrome.tabs.executeScript(null, {code: "dynamic_function_name()"});