各人知道,在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开始运行为止。如那里理惩罚,我想智慧的你必然已经知道谜底了。