Javascript 更新HTML不会';t立即在Chrome和Safari中更新网站

Javascript 更新HTML不会';t立即在Chrome和Safari中更新网站,javascript,html,google-chrome,safari,Javascript,Html,Google Chrome,Safari,我的HTML代码中有两个输出,如下所示: Loaded: <output id="loaded"> 0 </output> Requested: <output id="requested"> 0 </output> 当在控制台中打印它们时,LoadedObject和RequestedObject会正确更新。问题是,这在Firefox中运行良好,但Chrome和Safari不会立即显示更新的数字,它们只会在

我的HTML代码中有两个输出,如下所示:

Loaded: <output id="loaded"> 0 </output>
Requested: <output id="requested"> 0 </output>
当在控制台中打印它们时,
LoadedObject
RequestedObject
会正确更新。问题是,这在Firefox中运行良好,但Chrome和Safari不会立即显示更新的数字,它们只会在加载所有文件时显示

每个文件都会加载以下代码:

function loadFileAsText(filename, callback) {
  var req = new XMLHttpRequest();
    req.open("GET", filename + "?antibuffer=" + Math.random(), false);
    req.onload = function() {
    if(req.status >= 200 && req.status < 300 || req.status == 0)
      callback(req.responseText);
    else
      console.error(req.statusText, req.responseText);
    };
    req.send();
}
函数loadFileAsText(文件名,回调){ var req=新的XMLHttpRequest(); 请求打开(“GET”,filename+”?antibuffer=“+Math.random(),false); req.onload=函数(){ 如果(请求状态>=200&&req.status<300 | |请求状态==0) 回调(请求响应文本); 其他的 控制台错误(请求状态文本、请求响应文本); }; 请求发送(); }
问题在于,您已经使ajax请求同步了:

req.open("GET", filename + "?antibuffer=" + Math.random(), false);
// −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−^
这根本不是正确的做法。它会锁定大多数浏览器的UI,因为它会阻止JavaScript代码和页面绘制都在其上运行的线程

关闭该标志,使其默认为
true
(异步请求)

req.open("GET", filename + "?antibuffer=" + Math.random(), false);
// −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−^