gpt4 book ai didi

javascript - Chrome 的加载指示器在 XMLHttpRequest 期间不断旋转

转载 作者:IT王子 更新时间:2023-10-29 03:19:17 25 4
gpt4 key购买 nike

我正在编写一个使用 Comet/Long Polling 来保持网页最新的 AJAX 网络应用程序,我注意到在 Chrome 中,它将页面视为一直在加载(选项卡的图标一直在旋转)。

我认为这对于 Google Chrome + Ajax 来说是正常的,因为即使是 Google Wave 也有这种行为。

今天我注意到 Google Wave 不再使加载图标保持旋转,有人知道他们是如何解决这个问题的吗?

这是我的ajax调用代码

var xmlHttpReq = false;
// Mozilla/Safari
if (window.XMLHttpRequest) {
xmlHttpReq = new XMLHttpRequest();
}
// IE
else if (window.ActiveXObject) {
xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlHttpReq.open('GET', myURL, true);
xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlHttpReq.onreadystatechange = function() {
if (xmlHttpReq.readyState == 4) {
updatePage(xmlHttpReq.responseText);
}
}
xmlHttpReq.send(null);

最佳答案

我厚着脸皮偷走了Oleg的测试用例,稍微调整了一下模拟长轮询。

load.html:

<!DOCTYPE html>
<head>
<title>Demonstration of the jQery.load problem</title>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
jQuery(document).ready(function() {
$('#main').load("test.php");
});
</script>
</head>
<body>
<div id='main'></div>
</body>
</html>

test.php:

<?php
sleep(5);
?>
<b>OK!</b>

结果很有趣:在 Firefox 和 Opera 中,在 XMLHTTPRequests 期间没有显示加载指示器。 Chrome 让它旋转......我怀疑 Google Wave 不再使用长轮询(但是,例如,每 X 秒轮询一次,以节省资源),但我无法测试它,因为我没有帐户.

编辑: 我想通了:在加载 test.php 时添加一点延迟(可以尽可能小)之后,加载指示器在 load.html 已加载:

jQuery(document).ready(function() {
setTimeout(function () {
$('#main').load("test.php");
}, 0);
});

不知何故,原样confirmed in a comment在另一个答案中,当浏览器重新获得控制权以完成页面呈现时,指示器停止旋转。另一个优点是不能通过按 Esc 来中止请求。

关于javascript - Chrome 的加载指示器在 XMLHttpRequest 期间不断旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2703861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com