Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Chrome扩展中popup.html的内容没有快速更新_Javascript_Html_Dom_Dynamic_Google Chrome Extension - Fatal编程技术网

Javascript Chrome扩展中popup.html的内容没有快速更新

Javascript Chrome扩展中popup.html的内容没有快速更新,javascript,html,dom,dynamic,google-chrome-extension,Javascript,Html,Dom,Dynamic,Google Chrome Extension,我试图让Chrome扩展的background.js在每次完成任务时更新弹出窗口div中的文本,让用户知道发生了什么。我在background.js中有以下代码: ... sendStatusUpdate('Getting stuff...'); var gotStuff = getStuff(); ... sendStatusUpdate('Done.'); 其中: function sendStatusUpdate(statusUpdate) { var views = chrome.

我试图让Chrome扩展的background.js在每次完成任务时更新弹出窗口div中的文本,让用户知道发生了什么。我在background.js中有以下代码:

...
sendStatusUpdate('Getting stuff...');
var gotStuff = getStuff();
...
sendStatusUpdate('Done.');
其中:

function sendStatusUpdate(statusUpdate) {
  var views = chrome.extension.getViews({
    type: "popup"
  });
  views[0].document.getElementById('status').textContent = statusUpdate;
};
我希望span显示“Getting stuff…”,直到
getStuff()
函数完成执行(需要一段时间)。但现在我什么也看不到,直到一切都完成了,在这一点上,我看到“获取东西…”闪过十分之一秒,然后“完成”。我还让background.js向popup.js发送消息,以便该组件可以更新自己的视图,但同样的问题。奇怪的是,如果我在第一个
sendStatusUpdate()
之后放置一个断点,它将保持空白,直到我将鼠标放在上面或单击弹出窗口。然后显示“得到东西…”没问题

这里发生了什么?

所有扩展的视图(即那些以相同chrome开头的视图)-extension://id URL来源)在同一物理系统进程中执行,因此如果您的
getStuff()
是同步的,它将在Chrome能够更新弹出窗口的DOM之前运行。例如,您必须通过setTimeout使其异步,或者尝试。