异步使用Java applet

时间:2012-05-21 21:19:03

标签: java javascript browser applet

我的applet嵌入在我的HTML页面中。没什么特别的:

<applet archive='static/app/applet.jar' code='appletclass/AppletClass'>
    <param name='name' value='Applet name'>
    <param name='mayscript' value='true'>
</applet>

Applet本身有方法list,可执行一些持久的计算。从包含JavaScript的页面调用此方法:

try {
    appletElement.list();
} catch (ex) {}

当然,持久计算会冻结浏览器窗口,直到完成所有计算。

在没有浏览器冻结的情况下(有些)“异步”方式使用applet是否有任何解决方法?在applet源中使用线程是否有意义?

感谢您的帮助!

3 个答案:

答案 0 :(得分:2)

在关于mayscript attribute的页面上,我们现在可以找到信息:

  

LiveConnect是一种支持Java Applet和客户端脚本(如JavaScript,VBScript)之间交互的技术。较旧的Java浏览器插件(在Java版本1.6.0.10之前)默认情况下不允许applet使用LiveConnect,但可以使用MAYSCRIPT属性修改该设置。由于兼容性原因(因为Internet Explorer中的Java插件始终允许applet访问客户端脚本),较新的Java插件(来自Java版本1.6.0.10 )不会检查MAYSCRIPT属性,所有浏览器始终允许脚本访问

我已经在FF 18.0.1,Opera 11或12,Chrome和IE9上检查了这一点,而且没有任何额外的工作(tutarial on oracle page - 不需要MAYSCRIPT,只使用 JSObject 并导入 plugin.jar )。

答案 1 :(得分:0)

使用applet中的线程,然后使用JSObject回调页面将是这样做的。

答案 2 :(得分:-1)

我不确定你可以在applet中做些什么,但是从一个简单的javascript / html的角度来看,你无法以同步方式等待计算完成。如果您从服务器获取数据,则会有所不同。