可以将匿名函数或函数引用传递给executeScript吗?

时间:2014-09-02 20:03:11

标签: javascript google-chrome google-chrome-extension

是否可以将匿名函数传递给chrome API executeScript调用?目前我有以下代码:

chrome.tabs.executeScript(tab.id, {code: "document.body.appendChild(document.createElement('p'));"})

有没有办法将我想要执行的代码作为函数引用而不是字符串传递?我知道文件选项,但我更喜欢只传递对bg.js中已经提供的函数的引用。我不喜欢这个字符串,因为我在编辑器中丢失了语法高亮/格式化,以及其他原因。

1 个答案:

答案 0 :(得分:2)

您可以将函数表示为字符串:

var f = function(){ /* do stuff */ }
chrome.tabs.executeScript(tab.id, {code: "("+f.toString()+")();"});

注意,该函数仍然需要自包含(不使用任何非局部变量),因为它将在不同的上下文中执行。