Google chrome extension 如何将动态数据从contentscript.js发送到background.html
我正在尝试编写一个简单的Google chrome扩展。但是,当我尝试将一些动态数据从contentscript.js发送到background.html时,没有得到任何结果。 发送静态数据没有问题 以下是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) {
<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”字符串在代码执行上没有问题。