我正在尝试编写一个简单的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);
欢迎任何帮助。
答案 0 :(得分:1)
当您通过请求传递对象时,您不会像常规函数那样传递对它的引用。实际上,此对象在请求之前被序列化为字符串,作为字符串传递,然后从后台页面中的字符串汇编回来(这就是为什么您无法在无法序列化的请求中传递任何内容的原因)。所有参考文献都在此过程中丢失。
您可能需要重新考虑扩展架构以适应这种情况。