繁体   English   中英

通过Javascript杀死Java Applet

[英]Kill Java Applet via Javascript

我在一家开发公司工作,并且正在对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。

您始终可以将小程序加载到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错误。

我建议您创建一个监视要杀死的applet的类。 以某种servlet的形式运行监视器,并在需要将其杀死时,使javascript发布“ kill applet”命令。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM