优化Javaapplets加载过程

王朝java/jsp·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航