Java Applet 的载入时间
Author
Zhou Renjian
Create@
2004-12-27 16:45

从Java Applet载入到Applet.start()需要一段时间, 而就是Applet.start()已经完成, 从浏览器访问Applet中的函数, 还会需要一段时间. 譬如说在Linux下的FireFox, 通过JavaScript访问Applet内部函数的话, 必须登上一段时间, 譬如在J2SDK1.4.2_02中需要大概850ms, 在J2SDK1.4.2_06中需要大概650ms. 如果在此之前\显式调用的Applet的内部函数的话, 会导致Exception的产生, 从而浪费过多的处理Exception时间.
举例来说:
function checkApplet() {
var is_ie = (/msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent));
if (is_ie) {
webformApplet = document.getElementById("innerSignatureAppletIE");
} else {
webformApplet = document.getElementById("innerSignatureAppletMozilla");
}
var appletLoaded = false;
try {
if (webformApplet.isAppletLoaded()) {
appletLoaded = true;
}
} catch (e) {
}
if (appletLoaded) {
appletStart();
webformApplet.setIDSignParameters(true, true, true);
} else {
webformApplet = null;
window.setTimeout("checkApplet();", 50);
}
}
window.setTimeout("checkApplet();", 50);
最后一行代码中的50如果改成1050的话, 就能够使得真正运行到appletStart()所需要的时间缩短到2000ms以内, 而如果保持50不变则运行到appletStart()所需要的时间将是8000ms以上. 这里面就是因为就是Applet.start()已经运行结束, 但是此时还不能立刻访问内部函数.
不过上述现象在Windows的IE和FireFox都不会出现, Windows的两款浏览器都只需大约300ms就可以运行到appletStart()了.