如何将来自contentscript.js的动态数据发送到background.html

时间:2011-08-18 18:21:44

标签: google-chrome-extension

我正在尝试编写一个简单的Google Chrome扩展程序。但是当我尝试将一些动态数据从contentscript.js发送到background.html时,我得不到任何结果。 发送静态数据没有问题。

这是 background.html

<html>
<head>
      <script>
      chrome.extension.onRequest.addListener(function(request) {
                            alert(request.text);
                           });
      </script>
    </head>
</html>

以下是 conentscript.js ,其中静态数据可以正常

var req = {"text": "salam"};
chrome.extension.sendRequest(req);

contentscript.js 无效

var txt = getSelectedText();
var req = {"text": txt};
chrome.extension.sendRequest(req);

欢迎任何帮助。

1 个答案:

答案 0 :(得分:1)

当您通过请求传递对象时,您不会像常规函数那样传递对它的引用。实际上,此对象在请求之前被序列化为字符串,作为字符串传递,然后从后台页面中的字符串汇编回来(这就是为什么您无法在无法序列化的请求中传递任何内容的原因)。所有参考文献都在此过程中丢失。

您可能需要重新考虑扩展架构以适应这种情况。