小编典典

通过Javascript杀死Java Applet

java

我在一家开发公司工作,正在对Web应用程序进行重大的重新设计,该应用程序在每次单击后都会重新加载所有内容,以广泛使用Javascript,因此实际上感觉就像是一个真正的Web应用程序。功能之一是使用基于Web的Painter(我认为是Web上的MSPaint),我将其嵌入到“按需页面”中。绘制并上传图像后,Web应用程序将卸载该applet,然后继续显示文件上传到的目录。

这是麻烦开始的地方。所有这些都可以在IE和Safari上运行,但不能在Firefox
3.5上运行(尽管3.0可以完美运行)。Firebug告诉我,expando属性丢失。

我之前开发的Web应用程序Tiparlo遇到了类似的问题(实际上,通过jQuery对applet进行的任何操作都是错误的),但是通过将div包裹起来并控制(隐藏和显示)div而不是div来解决了该问题。小程序。不幸的是,这不适用于该Web应用程序,因为Applet必须销毁,而不仅仅是隐藏和显示,因为它占用了过多的资源,无法在不需要的整个时间运行。

简而言之:是否可以通过Javascript使Applet销毁自己?或者:是否有关于jQuery / expando /
applet问题的解决方法?我知道在HTML 4.01中严格不赞成使用applet,但现在将其更改为object并不是一个选择。

编辑:我添加了Firefox +
Firebug图片,向您显示实际的错误消息。发布代码是无可厚非的,因为它可以在其他所有浏览器上正常运行,并且是Firefox
3.5特定的问题。这是图片

注意:您可以忽略来自button.js的JS Bug。


阅读 330

收藏
2020-11-26

共1个答案

小编典典

您总是可以将小程序加载到iframe中,而只需离开小程序加载的页面即可。这会杀死它。

如果要从JavaScript调用destroy,您的另一个选择是放入类似的内容。

<script>
    document.MyApplet.killApplet();
</script>

public void killApplet() {
    AccessController.doPrivileged(new PrivilegedAction() {
        public Void run() {
            // kill the JVM System.exit(0); return null; 
        }
    });
}

这不是杀死applet的好方法,但是在较新的浏览器中,它不会引发JS错误,而在IE6等较旧的浏览器中,它将引发js错误。

2020-11-26