Bugzilla是Mozilla的问题跟踪器,在执行搜索时有一个很好的加载屏幕。在Ajax的时代,这没什么特别的。但是,他们没有任何脚本编写,我想知道如何。
例如:
您会看到一个包含动画图片的页面,文本“请等待您的错误被检索到”。并且标题为“Bugzilla正在考虑你的搜索”。
这是执行搜索时的整个DOM。没有元刷新,没有脚本。
<html>
<head>
<title>Bugzilla is pondering your search</title>
</head>
<body>
<div style="margin-top: 15%; text-align: center;">
<center>
<img width="160" height="87" alt=""
src="extensions/BMO/web/images/mozchomp.gif">
</center>
<h1>Please wait while your bugs are retrieved.</h1>
</div>
</body>
</html>
过了一会儿,会出现结果页面。之前的HTML消失了,出现了一个全新的DOM,包括一个新标题“Bug List”。
所以我的问题是:这是如何工作的?请不要列出替代技术 - 我根本不想加载屏幕,但是想要使用那种完全不同的机制。
答案 0 :(得分:3)
如果您查看页面的来源,您会看到实际上有两个响应,每个响应都有自己的标题
WARNING: YOUR BROWSER DOESN'T SUPPORT THIS SERVER-PUSH TECHNOLOGY.
--------- =_y97AELt1tHMqcK8D
Content-Type: text/html; charset=UTF-8
<html>
<head>
<title>Bugzilla is pondering your search</title>
</head>
<body>
<div style="margin-top: 15%; text-align: center;">
<center><img src="extensions/BMO/web/images/mozchomp.gif" alt=""
width="160" height="87"></center>
<h1>Please wait while your bugs are retrieved.</h1>
</div>
</body>
</html>
--------- =_y97AELt1tHMqcK8D
Content-Type: text/html; charset=UTF-8
content-disposition: inline; filename="bugs-2011-08-30.html"
Set-Cookie: {data}
Set-Cookie: {data}
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Bug List</title>
{the rest of the request}
我不太确定浏览器对此的支持,除了mozilla ......
答案 1 :(得分:0)
使用meta refresh tag每N秒重新加载页面。
只要收集搜索结果,就返回“请等待页面”(带元标记)。
结果准备好后,返回结果页面(不带元标记)。
当您打开Firebug(或类似网站)并打开网络标签页时,您应该能够看到正在发生的事情。