google-chrome - 在 chrome.tabs.executeScript 中,如何调用具有位于 contentscript 中的参数的函数?

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

最佳答案

我找到了自己问题的答案。您必须从扩展页面调用 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/

相关文章:

google-chrome - 如何防止用户放大桌面网络应用程序?

java - 将 java 对象和方法调用转换为 Clojure 代码

java - 具有 SOAPBinding.ParameterStyle.BARE 的 Web 服务要求所有方法(包括非 WEBMETHOD)只有一个参数作为输入

java - 向 Apache HttpPost 添加参数

node.js - Selenium Node.js 中的实验性 Chrome 选项

javascript - 如何使用 Chrome 扩展程序插入 HTML?

firefox - WebM 编码文件可在 Chrome 中播放,但不能在 FFv6 HTML5-Video 中播放

java - 如何使用 HashMap 解读单词列表?

ruby-on-rails - Ruby on Rails : create action doesn't work, 而新建、编辑和更新(与创建中的形式相同!)操作有效 - 为什么?

.htaccess |如果有特定参数则不重定向