Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过Javascript杀死Java小程序_Java_Javascript_Jquery_Web Applications - Fatal编程技术网

通过Javascript杀死Java小程序

通过Javascript杀死Java小程序,java,javascript,jquery,web-applications,Java,Javascript,Jquery,Web Applications,我在一家开发公司工作,正在对一个Web应用程序进行重大的重新设计,每次点击后都会重新加载所有内容,以广泛使用Javascript,因此它实际上感觉像一个真正的Web应用程序。其中一个特性是使用基于web的画师(想想web上的MSPaint),我会根据需要将其嵌入页面中。在绘制并上载图像后,Web应用程序将卸载小程序并继续显示文件上载到的目录 这就是麻烦开始的地方。这一切都可以在IE和Safari上运行,但不能在Firefox 3.5上运行(尽管3.0可以完美运行)。Firebug告诉我expan

我在一家开发公司工作,正在对一个Web应用程序进行重大的重新设计,每次点击后都会重新加载所有内容,以广泛使用Javascript,因此它实际上感觉像一个真正的Web应用程序。其中一个特性是使用基于web的画师(想想web上的MSPaint),我会根据需要将其嵌入页面中。在绘制并上载图像后,Web应用程序将卸载小程序并继续显示文件上载到的目录

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

我之前开发的Web应用程序Tipallo也有类似的问题(事实上,通过jQuery对小程序进行的任何操作都是错误的),但通过包装一个div并控制(隐藏和显示)div而不是小程序解决了这个问题。不幸的是,这不适用于此Web应用程序,因为小程序必须被销毁,而不仅仅是隐藏和显示,因为它占用了太多的资源,无法在不需要的地方一直运行

简而言之:是否可以通过Javascript让小程序自行销毁?或者:对于jQuery/expando/applet问题是否有解决方法?我知道HTML 4.01 strict中不推荐使用小程序,但现在不能将其更改为object

编辑:我添加了一张Firefox+Firebug的图片来显示实际的错误消息。发布代码不是上帝,因为它在其他浏览器上都能完美工作,是Firefox 3.5特有的问题


注意:您可以忽略button.JS中的JS错误。

我建议您创建一个类来监视要杀死的小程序。将监视器作为某种servlet运行,并让javascript在需要终止时发布“kill applet”命令

您始终可以在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; 
        }
    });
}

document.MyApplet.killApplet();
公共应用程序(){
AccessController.doPrivileged(新的PrivilegedAction(){
公开募捐{
//杀死JVM系统。退出(0);返回null;
}
});
}

这不是一种杀死小程序的好方法,但在较新的浏览器上,它不会抛出JS错误,在旧的浏览器(如IE6)上,它会抛出JS错误。

如果破坏小程序周围的DIV,会发生什么?(不是隐藏它,而是用removeElement和delete销毁它。我试过了,但是没有用。我的理论是:通过隐藏父div,浏览器本身也会隐藏子div,而不是Javascript。但是,当删除父div时,Javascript的工作也是删除子applet,从而导致expando错误出现。我知道了我一直在关注jQuery Bug跟踪器,该特定Bug已列在1.3.3版本的路线图上。由于我不能等待它自行修复(由jQuery开发团队修复),我必须找到一个解决方法。是的,这一个解决了问题(生成一个新的,但我可以处理该问题)。它产生了什么新问题,这很奇怪。如果在javascript调用完成后杀死小程序,可能会避免错误。可以使用java.util.Timer.schedule()执行此操作。为什么不在小程序的stop()方法中使用nuilt?