2014-09-02 143 views
3

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

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

有没有办法将我想执行的代码作为函数引用而不是字符串传递?我知道文件选项,但我更愿意只传递一个对bg.js中已经提供的函数的引用。我不喜欢字符串,因为在编辑器中我失去了语法突出显示/格式化,还有其他一些原因。

回答

2

你能代表你的函数作为一个字符串:

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

小心,功能仍然需要自包含的(不使用任何非局部变量),因为它会在不同的执行上下文。

+0

这肯定是开玩笑的人..当然,这个问题真的有解决办法吗?怎么样传递对象? – Pacerier 2017-08-06 03:18:54

+0

@Prier这可能取决于你的问题,而不是原来的问题。如果完全不同,请提出一个新问题。 – Xan 2017-08-06 06:30:07

相关问题