2011-08-22 123 views
0

我想呼吁的内容指令(Chrome扩展程序)动态功能。但常用的方式不起作用:Chrome扩展:内容脚本 - >动态功能

chrome.extension.onRequest.addListener(function cs_listener(request, sender, sendResponse) { 
    [request.action](); 
} 

request.action is blah。功能blah()是一个....现在它来...一个功能!

错误抛出:

Error in event handler for 'undefined': TypeError: object is not a function 

有人拿到过这个?我真的不喜欢为我需要的每一个行动开关。

回答

1

必须使用

window[request.action](); 

作为

[request.action](); 

创建包含request.action一个阵列,并试图调用的是,这导致错误。 window[request.action]();window获得命名request.action属性和调用。

如果物业首次定义您可能还需要检查:

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

呀,窗口[request.action]();作品。奇怪,我之前尝试过,但没有奏效。打字问好。不管怎样,谢谢! –

1

另一种方式是打电话只是从后台页面的功能,而不发送一个请求:

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

这也适用,但有一个限制。您不能将内容脚本的响应发送到后台脚本。 –

+0

@Johnny真,你仍然可以通过初始化请求来发送结果。 – serg

相关问题