0

我想在内容脚本(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

有人克服了这个?我真的不喜欢为我需要的每一个动作进行切换。

4

2 回答 2

1

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

chrome.tabs.executeScript(null, {code: "dynamic_function_name()"});
于 2011-08-22T15:21:54.060 回答
1

你必须使用

window[request.action]();

作为

[request.action]();

创建一个包含的数组request.action,并尝试调用它,这会导致错误。window[request.action]();获取名为request.actionfrom的属性window并调用它。

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

if(typeof window[request.action] == "function")
  window[request.action]();
于 2011-08-22T15:03:55.127 回答