Posted on 2007-06-26 10:32
zht 阅读(1585)
评论(0) 编辑 收藏
一般applet在网页中显示之前有两个过程
1、下载applet
2、初始化applet(init)
如果不做处理则刚开始的时候会是灰色的一块,而且有一个框提示单击以激活。通过做如下处理可以来处理这些问题:
1、在网页上定义一个DIV层,将其设为全屏显示,通过<div id="show" style="width: 1%;height: 1%"><script type="text/javascript" src="js.js"></script>
</div>的方式把applet镶入网页,必须要有一定的长宽,要不applet是不会加载的,用来模拟applet下载和初始化工程,因为下载过程是无法控制的,它和网络以及applet的大小有关系,所以刚开始的时候可以用一个gif来显示程序下载过程。
2、applet下载完成进入初始化阶段以后,就可以通过applet调用javascript在页面上显示初始化过程了,通过调用页面js中的一些函数在页面上输出初始化进度,具体可以applet调用js,以进度条的形式展现给用户。
3、applet初始化完毕以后把DIV层设为不可见,完毕。
关于单击以激活提示框,这个提示框,是微软为了避免与eolas公司和加利福尼亚大学之间的专利侵权纠纷,而发布的一个ie非安全更新,这不是什么bug(http://support.microsoft.com/kb/912945)安装这个补丁以后,ie对activex控件和java程序的处理方式将有所改变,默认情况下不会主动激活。可以有两种处理方式(1)卸载微软的更新补丁(2)通过程序的方式来处理,这里推荐第二种方法。具体如下:
不在页面上直接写applet或object标签通过javascript写入,并且要把这些javascript语句写入到一个js中,然后用<script type="text/javascript" src="js.js"></script>的方式载入 这样就可以避免出现单击以激活提示框。
以下是Applet调用页面Javascript的示例:
首先要导入jre/lib下的 plugin.jar文件
import netscape.javascript.JSObject;
JSObject window = JSObject.getWindow(this);
JSObject docment = (JSObject) window.getMember("document");
docment.eval("setPB(" + 10 + ")");
for (int i = 0; i < 11; i++) {
Thread.sleep(500);
docment.eval("setPB(" + i * 10 + ")");
docment.eval("setStr('" + i * 100000 + "初始化 ')");
}