我目前有一個需要一段時間才能加載的網頁。頁面的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)讀取了瀏覽器在嘗試渲染任何內容之前等待讀取特定數量的字符。
任何想法,將不勝感激。瀏覽器充滿了神祕的技巧和黑客,使我神祕。
謝謝,這就是我最終做的(略有改動)。 – duane