考虑以下代码:
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?但仍然无法弄清楚发生了什么。
答案 0 :(得分:1)
我找到了自己问题的答案。在扩展页面中,您必须调用chrome.tabs.sendRequest方法,并从内容脚本中使用chrome.extension.onRequest.addListener方法添加侦听器。发送请求方法将触发内容脚本中找到的事件,使您能够将任何形式的数据发送到内容脚本。