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