我的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源中使用线程是否有意义?
感谢您的帮助!
答案 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的角度来看,你无法以同步方式等待计算完成。如果您从服务器获取数据,则会有所不同。