Google chrome extension 如何将动态数据从contentscript.js发送到background.html

Google chrome extension 如何将动态数据从contentscript.js发送到background.html,google-chrome-extension,Google Chrome Extension,我正在尝试编写一个简单的Google chrome扩展。但是,当我尝试将一些动态数据从contentscript.js发送到background.html时,没有得到任何结果。 发送静态数据没有问题 以下是background.html: <html> <head> <script> chrome.extension.onRequest.addListener(function(request) {

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

以下是background.html

<html>
<head>
      <script>
      chrome.extension.onRequest.addListener(function(request) {
                            alert(request.text);
                           });
      </script>
    </head>
</html>
var req = {"text": "salam"};
chrome.extension.sendRequest(req);
var txt = getSelectedText();
var req = {"text": txt};
chrome.extension.sendRequest(req);
这是contentscript.js,但不起作用:

<html>
<head>
      <script>
      chrome.extension.onRequest.addListener(function(request) {
                            alert(request.text);
                           });
      </script>
    </head>
</html>
var req = {"text": "salam"};
chrome.extension.sendRequest(req);
var txt = getSelectedText();
var req = {"text": txt};
chrome.extension.sendRequest(req);

欢迎任何帮助。

通过请求传递对象时,不会像常规函数那样传递对该对象的引用。这个对象实际上是在请求之前被序列化为字符串,作为字符串传递,然后在后台页面中从字符串组装回来(这就是为什么不能在请求中传递任何不能序列化的内容)。在此过程中,所有引用都将丢失


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

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


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

谢谢您的帮助。我用字符串(txt)来解决这个问题,因为“txt”字符串在代码执行上没有问题。谢谢你的帮助回答。我用字符串(txt)来解决这个问题,因为“txt”字符串在代码执行上没有问题。