快速业务通道

优化Java Applet的加载过程 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23

优化Java Applet的加载过程

时间:2010-12-13

大家知道,在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开始运行为止。如何处理,我想聪明的你一定已经知道答案了。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号