Applet 載入期間,瀏覽器會在預留區域顯示灰色方塊,體驗不佳。本文示範使用 JavaScript 動態切換圖層,在載入完成前顯示「載入中...」訊息,載入完成後自動切換到 Applet 顯示區域。
<div id="loading" style="position:absolute; left:150; top:10;">
請稍候,Java Applet 載入中...
</div>
<div id="myapplet" style="position:absolute; left:150; top:10; visibility:hidden;">
<applet code="charts.ChartsApplet" archive="charts.jar"
width="600" height="400" codebase="" VIEWASTEXT>
<param name="xValue" value="1,2,3,...">
<param name="yValue" value="22,21,19,...">
</applet>
</div>
<div> 位置、尺寸完全一致 (position:absolute + 同座標)loading 預設顯示,myapplet 預設隱藏 (visibility:hidden)<script>
function init() {
// IE (document.all)
if (document.all) {
document.all.loading.style.visibility = "hidden";
document.all.myapplet.style.visibility = "visible";
document.applets[0].repaint(); // 強制重繪
}
// Netscape 4 (document.layers)
else {
document.loading.visibility = "hide";
document.myapplet.visibility = "visible";
}
}
</script>
<body onload="init()">
document.all 在 IE 中當**頁面所有內容**(含 Applet、圖片、聲音)完全下載並解析完成後才為真。因此 onload 觸發時 Applet 已準備就緒。
| 瀏覽器 | 隱藏載入層 | 顯示 Applet 層 | 重繪觸發 |
|---|---|---|---|
| IE 4+ | document.all.loading.style.visibility="hidden" | document.all.myapplet.style.visibility="visible" | document.applets[0].repaint() |
| Netscape 4 | document.loading.visibility="hide" | document.myapplet.visibility="visible" | 自動重繪 |