sendRequest删除传递函数

时间:2012-03-17 14:14:39

标签: javascript google-chrome google-chrome-extension

Chrome会删除我尝试通过sendRequest传递的功能。

function sendQuery() {
  var currentQuery = document.getElementById("queries").value;

  var request = {
    option: "random value",
    command: function() {
      alert("fire!");
    }
  };       

  chrome.tabs.getSelected(null, function(tab) {
    chrome.tabs.sendRequest(tab.id, request)
  });
}

正如您所看到的,request包含函数command,但当我'转储'内容脚本收到的请求时,我得到的一切就是:

request
  Object
    option: "random value"
    __proto__: Object

我也需要传递command,而不仅仅是option。在此先感谢帮助我这样做。

编辑:根据Pointy的建议编辑,但问题仍然存在。

1 个答案:

答案 0 :(得分:1)

chrome.tabs.sendRequest的第二个参数是为运输而序列化的JSON。

传递函数的唯一方法是通过第三个参数。此函数作为chrome.extension.onRequest事件侦听器的第三个参数接收:

function sendQuery() {
    var currentQuery = document.getElementById("queries").value;

    var request = { option: "random value" };
    var command = function() {  alert("fire!");  };       

    chrome.tabs.getSelected(null, function(tab) {
       chrome.tabs.sendRequest(tab.id, request, commans);
    });
}