我目前有一个网页需要一段时间才能加载。页面的 php 端进行了大量的数据处理和计算,这是(不幸的)不可避免的。我想在 php 处理时在页面上显示一些东西。不幸的是,页面的大部分依赖于 php 计算。
我目前的解决方案如下:
HTML/PHP(开始):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title id="title">Loading</title>
<link href="style.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="preLoading.js"></script>
</head>
<body onload="onLoad()">
<?php
flush();
?>
<?php
// computation.
?>
的JavaScript:
document.write('<span id="loading">Please wait... Loading and processing data.</span>');
function onLoad() {
if (document.getElementById) {
var loading = document.getElementById("loading");
loading.style.display="none";
}
}
从某种意义上说,它运行良好,当页面呈现时,页面呈现时会显示一些等待消息。但从某种意义上说,它不起作用,因为页面在渲染任何东西之前仍然等待接收所有数据。我怎样才能完成后者?
需要注意的一点:doctype 之前的空行包含 1024 个空格,因为我在某些地方(包括 StackOverflow)读到浏览器会等到读取一定数量的字符后再尝试渲染任何内容。
任何想法,将不胜感激。浏览器充满了让我感到困惑的神秘技巧和黑客行为。