top
Loading...
優化Javaapplets加載過程

大家知道,在java applet還沒有全部加載的時候,IE或Netscape會在applet對應的區域顯示一塊灰色的區域。那,您有沒有想過用其他的方式代替它呢?

本文介紹了如何利用JavaScript 實現在加載java applet時候顯示一段消息,比如請稍候之類的話。該段代碼可以在IE和Netscape運行。

下面的代碼就可以解決這個問題。

<html>
<head>
<title>Your Title Here</title>
</head>

<script language="JavaScript">
<!-- Hide script from old browsers
function init()
{
// Microsoft Internet Explorer
if (document.all)
{
document.all.loading.style.visibility="hidden";
document.all.myapplet.style.visibility="visible";
document.applets[0].repaint();
}
// Netscape Navigator
else
{
document.loading.visibility="hide";
document.myapplet.visibility="visible";
}
}
// -->
</script>

<style type="text/css">
#loading {
position:absolute;
left:150;
top:200;
}
#myapplet {
position:absolute;
left:10;
top:10;
visibility:hide;
}
</style>
<body onLoad="init()">
<div id="loading">
<p>Please wait while Java applet loads...</p>
</div>
<div id="myapplet" style="visibility:hidden">
<applet archive="app1.jar" code="app1.class" align="baseline" width="620" height="442">
<p>Requires a browser that supports Java.</p>
</applet>
</div>
</body>
</html>

解釋:

首先,讓我們來看看我們真正想做的是什么. 其實我們只不過希望把下載java程序過程中的不雅觀的灰塊去掉,以一些消息如正在載入,請稍候之類的畫面蓋住原來的灰色區域。而一旦java加載完畢,馬上把該區域恢復為applet可見。

上面的javascript代碼就是實現了這個目的的一個實例。

下面,讓我來逐條解釋一下我們是如何實現的。

首先請看以下部分。

<div id="loading">
<p>Please wait while Java applet loads...</p>
</div>
<div id="myapplet" style="visibility:hidden">
<applet archive="app1.jar" code="app1.class" align="baseline" width="620" height="442">
<p>Requires a browser that supports Java.</p>
</applet>
</div>

正如您所見到的,我用了2個層,第一個層(id為loading)可以寫上一些提示消息。而第2個層(id為myapplet)在一開始是不可見的。當applet下載好了,馬上把第2個層顯示出來,并把第一個層設為不可見。因此,只要這2個層大小,位置必須完全一致。就可以實現我們的目標。下面是對不同的層的屬性描述代碼。

<style type="text/css">
#loading {
position:absolute;
left:150;
top:200;
}
#myapplet {
position:absolute;
left:10;
top:10;
visibility:hide;
}
</style>

好,現在我們只差最后一個問題需要解決:如何知道applet已經完全下載了呢?在IE和netscape中都有提供document.all這個屬性,當應頁面的全部內容(包括applets,圖片,聲音等)已經下載后該屬性為真。好,這樣,我們只需監測document.all是否為真,如果是,那就可以把消息所在的層設為不可見,而applet所在的層設為可見,并刷新applet的顯示(因為先前applet的顯示被隱藏了),否則則相反處理。

這是處理后的代碼:

<script language="JavaScript">
function init()
{
if (document.all)
{
document.all.loading.style.visibility="hidden";
document.all.myapplet.style.visibility="visible";
document.applets[0].repaint();
}
else
{
document.loading.visibility="hide";
document.myapplet.visibility="visible";
}
}
</script>

大功告成。其實,用這個辦法同樣適用于用含有圖片蓋住applet直到applet開始運行為止。如何處理,我想聰明的你一定已經知道答案了。


作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗