如果我一个接一个地发出大约8个请求,那么它们会很好地加载,但是之后只是说#34;等待。"
这是我的基本html模板:
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<title>Editing Quiz</title>
<script src="../assets/js/lib.js"></script>
</head>
<body>
<div>
<a href="#/test">test</a>
<a href="#/demos/QuizDemo">QuizDemo</a>
</div>
<div id="container">
</div>
</body>
</html>
以下是我的lib.js的相关部分:
function loadPage(e) {
document.getElementById("container").innerHTML = "";
var baseFilename = location.hash.substr(1);
var url = "/LiquiZ2" + baseFilename + "_ajax.jsp"; // name of dynamic file to run
var json = new XMLHttpRequest();
json.onreadystatechange=function() {
if (json.readyState!==4 || json.status!==200)
return;
processAJAX(json.responseText);
}
json.open("GET", url, true);
json.send();
}
window.onload = loadPage;
window.onhashchange = loadPage;
如果我快速点击&#34;测试&#34;和#34; QuizDemo&#34;一个接一个(或在每次点击之间等待几秒钟),在8次请求后,他们停止加载并进入待处理状态。他们永远无法恢复,之后提出的任何请求也会停止。
这在Firefox中完美运行,所以我不知道出了什么问题。
答案 0 :(得分:0)
问题是我在页面上有视频元素。 Chrome显然会自动开始加载视频,但会以块的形式加载它们,因此在您观看整个视频之前它们永远不会完成。因此,当我为页面加载新数据时,视频请求仍处于不稳定状态。
为了解决这个问题,我创建了一个全局列表media
,每当我创建一个加载流(audio
,video
)的元素时,我都会将它附加到列表中。然后每当我重新加载页面时,我只会遍历media
并调用media[i].removeAttribute("src")
然后media[i].load()
,这将尝试重新加载流。重新加载流会自动中止以前的所有请求,如果src不存在,则加载会无声地失败。