【发布时间】:2019-02-13 19:01:30
【问题描述】:
我正在从 background.js 向 popup.js 发送一条字符串消息。我确实在 popup.js 中收到了一条消息,但我无法对其进行操作。如果一个 alert() 它或者我将它分配给 popup.html 元素的 innerHTML,我可以查看它,但我不能将它分配给 popup.js 中的任何变量,所以我可以修改它并使用它.
我尝试了常规赋值,我尝试使用 substring() 将消息复制到另一个变量中
这里有一段 background.js,它向 popup.js 发送消息。 myString 是一个字符串:
chrome.runtime.sendMessage({
action: "getSource",
source: myString
});
这是一段popup.js,一旦执行background.js,就会收到消息,下面的代码可以工作,它会在popup.html中显示字符串:
chrome.runtime.onMessage.addListener(function(request, sender) {
if (request.action == "getSource") {
container.innerHTML = request.source;}})
这也有效:
chrome.runtime.onMessage.addListener(function(request, sender) {
if (request.action == "getSource") {
alert(request.source);}})
但是当我尝试将它分配给一个变量时,我什么也得不到(testString 仍然是空的):
var testString = '';
chrome.runtime.onMessage.addListener(function(request, sender) {
if (request.action == "getSource") {
testString = request.source;}})
如果我在 chrome.runtime.onMessage.addListener(...) 之外为 testString 赋值,则赋值工作正常,testString 最终为“abcde”:
var testString = '';
chrome.runtime.onMessage.addListener(function(request, sender) {
if (request.action == "getSource") {
console.log("do nothing")}});
testString = "abcde";
我想将 request.source 的内容放在一个变量中,以便我可以对其进行操作。
谢谢。
【问题讨论】:
-
你应该在回调内部操作它,而不是在外部。
标签: javascript google-chrome-extension