在chrome.tabs.executeScript中,如何调用具有驻留在脚本中的参数的函数?

时间:2011-03-29 13:21:21

标签: google-chrome methods parameters

考虑以下代码:

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?但仍然无法弄清楚发生了什么。

1 个答案:

答案 0 :(得分:1)

我找到了自己问题的答案。在扩展页面中,您必须调用chrome.tabs.sendRequest方法,并从内容脚本中使用chrome.extension.onRequest.addListener方法添加侦听器。发送请求方法将触发内容脚本中找到的事件,使您能够将任何形式的数据发送到内容脚本。

有关详细信息,请参阅http://aarongusman.wordpress.com/2011/03/30/communication-between-chrome-extension-content-scripts-and-extension-pages/