程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 優化Java Applet的加載過程

優化Java Applet的加載過程

編輯:關於JAVA

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

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

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

<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>
<BODY onLoad="init()">
<div id="loading" style="position:absolute;left:150;top:10;">
Please wait while Java applet loads...
</div>
<div id="myapplet" style="position:absolute;left:150;top:10;visibility:hidden">
<applet code="charts.charts.class" archive="charts.jar" width="600" height="400" codebase="" VIEWASTEXT>
<Param name="xValue" value="1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,
23,24,25,26,27,28,29,30">
<Param name="yValue" value="22,21,19,23,18,24,28,30,27,22,20,18,16,18,19,16,17,14,12,
13,16,18,19,20,16,17,13,10,14,19,25">
</applet>
</div>
</BODY>

解釋:

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

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

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

首先請看以下部分。

<div id="loading" style="position:absolute;left:150;top:10;">
Please wait while Java applet loads...
</div>
<div id="myapplet" style="position:absolute;left:150;top:10;visibility:hidden">
<applet code="charts.charts.class" archive="charts.jar" width="600" height="400" codebase="" VIEWASTEXT>
<Param name="xValue" value="1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,
23,24,25,26,27,28,29,30">
<Param name="yValue" value="22,21,19,23,18,24,28,30,27,22,20,18,16,18,19,16,17,14,12,
13,16,18,19,20,16,17,13,10,14,19,25">
</applet>
</div>

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

現在我們只差最後一個問題需要解決:如何知道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開始運行為止。如何處理,我想聰明的你一定已經知道答案了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved