2011-08-22 90 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

相關問題