考虑这段代码:
function SwapColumns() {
chrome.tabs.executeScript(null,
{code:"SwapNameAndSurname();"});
}
上面的代码在 popup.html 中,方法 SwapNameAndSurname() 在名为 js.js 的内容脚本中,它只包含一个充满函数的库。当我从 popup.html 调用 SwapColumns 函数时,js.js 中的 SwapNameAndSurname() 函数被称为通过内容脚本的力量改变原始页面的 DOM 中的某些内容。
但是我的问题就在这里。我在 popup.html 中准备了一个名为 employee 的对象,我需要将它作为参数发送到 SwapNameAndSurname() 函数:
var employee = {'Name' : 'John', 'Surname' : 'Doe', 'Qualifications' : [{'Title':'MCAD', 'Date':'Jan 2008'},{'Title':'MCSA', 'Date':'Feb 2008'}]};
function SwapColumns() {
chrome.tabs.executeScript(null,
{code:"SwapNameAndSurname(**???employee???**);"});
}
我怎样才能做到这一点?由于在 chrome.tabs.executeScript 中您必须将代码直接写入字符串,因此您无法真正发送参数。我已阅读 Chrome's tabs.executeScript - passing parameters and using libraries?但仍然无法弄清楚发生了什么。
最佳答案
我找到了自己问题的答案。您必须从扩展页面调用 chrome.tabs.sendRequest 方法,从内容脚本中您必须使用 chrome.extension.onRequest.addListener 方法添加监听器。发送请求方法将触发在内容脚本中找到的事件,使您能够将任何形式的数据发送到内容脚本。
如需进一步引用,请参阅 http://aarongusman.wordpress.com/2011/03/30/communication-between-chrome-extension-content-scripts-and-extension-pages/
关于google-chrome - 在 chrome.tabs.executeScript 中,如何调用具有位于 contentscript 中的参数的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5473179/