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

あなたは使用する必要があります

window[request.action]();

なので

[request.action]();

を含む配列を作成request.actionし、それを呼び出そうとすると、エラーが発生します。からwindow[request.action]();という名前のプロパティを取得し、それを呼び出します。request.actionwindow

プロパティが最初に定義されているかどうかを確認することもできます。

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

別の方法は、リクエストを送信せずに、バックグラウンドページからその関数を呼び出すことです。

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