About charset in <Script> >>
<< Browser's Encoding
Java Applet 的载入时间

Author Zhou Renjian Create@ 2004-12-27 16:45
whizz Note icon
从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()了.

本记录所在类别:
本记录相关记录: