我知道如何使用applet
,object
,embed
标记和JavaScript
部署applet,但我采用了最佳方法(就最终用户而言)体验)。
Sun建议在同一页面上使用the applet tag和mixed embed / object tag。
我正在考虑以下内容:
之前已经提出过问题:how to deploy,check for 1.6和Plugin framework。这些都没有完全回答我的问题。我也不考虑网络启动或Java FX。
我目前的解决方案是包含一个为Java 1.1编译的额外小型测试applet。如果找到Java pre-1.5,则会将页面重定向到失败页面。如果没有找到Java,该页面会要求用户访问java.com。这可以接受,但是很差,因为它需要一个额外的小程序,并且在VM启动时不会显示任何内容。
答案 0 :(得分:8)
在整个网络上对旧的和过时的信息进行了很多努力之后,似乎实际上有一种非常简单的方法来部署applet - 只需让Sun为您编写正确的标签!
<script src="http://java.com/js/deployJava.js"></script>
<script>
var attributes = {
code:'java2d.Java2DemoApplet.class',
archive:'Java2Demo.jar',
width:710,
height:540
};
var parameters = {
fontSize:16
};
var version = '1.6' ; // whichever minimum version you want to target, null works also
deployJava.runApplet(attributes, parameters, version);
</script>
对我来说,像魅力,跨浏览器一样工作,如果没有安装java,可以通过自动重定向来下载页面。
更多信息:
http://java.sun.com/javase/6/docs/technotes/guides/jweb/deployment_advice.html#deplToolkit
答案 1 :(得分:6)
请参阅PulpCore's solution(许可证:BSD)。
一个例子:the Milpa game ......现在,如果我看过的话,就是罗尔斯·罗伊斯的小程序部署。
并且 - 绝对同意,Sun的Deployment Toolkit非常需要处理禁用的Java - 它似乎完全忽略了这一点。
答案 2 :(得分:3)
我发现JavaScript是最好的解决方案。对于IE,编写一个对象标记并通过classid attribute控制JRE的确切最小版本,对于其他所有类型=“application / x-java-applet; version = 1.5”的embed标记都可以正常工作。两者都使用内置的浏览器机制来处理过时(或完全缺乏)java。
你也可以做一些奇特的事情,比如指定1.5.0作为最低版本,但设置auto-download to 1.6,这样任何没有java的人都会得到最新的JRE而不是1.5。
我工作的项目多年来推出了我们自己的跨平台JS包装器,但是使用Java 6更新10 Sun创建了deployJava.js,旨在为您解决所有这些问题。
答案 3 :(得分:2)
+1 applet-fu为我在chrome,FF,IE 6,7,8上工作。 我认为它不会比这更多滚动royce:
http://products.metamolecular.com/2009/06/08/better-applet-deployment-with-applet-fu http://github.com/metamolecular/applet-fu
看起来像一个绝对简单的东西,也没有太多的文档。但那就是美丽!!
applet_fu.run(
{'width':'550','height':'320'},
{
'archive':'myapplet.jar',
'code':'com/example/MyApplet.class',
'foo':'bar'
},
'1.4.2',
'<img src="/no-java.png" />'
);
是的,没错,如果找不到applet,你可以在html中显示。 1.4.2部分是要检查的最低版本,如果找到较低版本,它仍然会显示没有java 。 foo:bar是params的一个例子。
答案 4 :(得分:2)
我强烈建议不要使用deployJava.js。 我怀疑它是否经过测试。 看看它的代码:
s = '<param name="' + parameter + '" value="' + parameters[parameter] + '">';
它没有关闭标签! Chrome上的choke完全给了我“Uncaught Error:INVALID_STATE_ERR:DOM Exception 11”!更不用说使用document.write,你必须克服这些问题Java Plug-In - Important addition to deployJava.js。
注册只是为了告诉这个,因为前几天花了四个小时完全沮丧地处理了这个问题:(
答案 5 :(得分:1)
为了获得最佳的跨浏览器兼容性,您应该遵循SUn的建议,特别是使用混合嵌入/对象标记。这很难看,但给你最好的报道。
答案 6 :(得分:1)
考虑在起始页面上有一个小applet,它告诉浏览器转到真正的applet页面。
在开始页面上,还有一个“你可以在这里获取Java ”链接。
根据我的经验,讨厌的javascript提供了令人讨厌的支持:(
另请注意,Java 6 u 10可以使用Java WebStart来部署Applet。如果您的用户拥有此版本或更高版本,这可能是一种更好的用户体验。
答案 7 :(得分:1)
您只需使用object标签即可。它是HTML规范的一部分,适用于大多数浏览器。
带安装选项的后备只是在标签中写一些文字。
这是一篇关于这个主题的有用文章:
此致
答案 8 :(得分:1)