适用于Java applet的Deployment Toolkit:如何在未安装JVM时避免重定向

时间:2013-02-14 12:43:27

标签: java javascript applet jnlp java-deployment-toolkit

我创建了一个applet;它使用Deployment Toolkit进行部署,如下所示(网址是假的):

<script type="text/javascript" 
             src="https://www.java.com/js/deployJava.js"></script>
<script>
var attributes = {
        code:'br.com.brandizzi.adam.applet.MyApplet.class',
        archive:'http://adam.brandizzi.com.br/html/applet.jar',
        width : 50,
        height : 1
    };
    var parameters = {
        fontSize : 1,
    };
    var version = '1.6';
    deployJava.runApplet(attributes, parameters, version);
</script>

效果很好。幸运的是,我通过没有JVM的机器到达了我的网站,它总是被重定向到http://www.java.com - the documentation states

  

如果客户端没有所需的最低版本的JRE软件,则Deployment Toolkit脚本会将浏览器重定向到http://www.java.com,以允许用户下载最新的JRE软件。在某些平台上,用户可能会在查看包含applet的网页之前被重定向。

有没有办法避免这种重定向?没有JVM,该页面可以很好地工作,applet只是一点改进。无论如何,我们的用户可能会对此重定向感到非常困惑,他们甚至没有安装JVM的权限。

3 个答案:

答案 0 :(得分:3)

如果您查看deployJava.js脚本并且运行runApplet函数:

     /**
     * Ensures that an appropriate JRE is installed and then runs an applet.
     * minimumVersion is of the form #[.#[.#[_#]]], and is the minimum
     * JRE version necessary to run this applet.  minimumVersion is optional,
     * defaulting to the value "1.1" (which matches any JRE).
     * If an equal or greater JRE is detected, runApplet() will call
     * writeAppletTag(attributes, parameters) to output the applet tag,
     * otherwise it will call installJRE(minimumVersion + '+').

所以如果你像这样打电话

deployJava.runApplet(attributes, parameters, null);

或者像这样

deployJava.runApplet(attributes, parameters, 'undefined');

或者像这样

deployJava.runApplet(attributes, parameters, '1.1');

它只会检查是否在所有上安装了,然后才重定向到java.com进行安装。既然你有一个applet,你需要Java:)

或者你可以直接调用 deployJava.writeAppletTag(属性,参数)

    /**
     * Outputs an applet tag with the specified attributes and parameters, where
     * both attributes and parameters are associative arrays.  Each key/value
     * pair in attributes becomes an attribute of the applet tag itself, while
     * key/value pairs in parameters become <PARAM> tags.  No version checking
     * or other special behaviors are performed; the tag is simply written to
     * the page using document.writeln().
     *
     * As document.writeln() is generally only safe to use while the page is
     * being rendered, you should never call this function after the page
     * has been completed.
     */

答案 1 :(得分:1)

使用Deployment Toolkit的全部意义在于,如果没有JVM,它会提示用户安装JVM,以便您的applet可以运行。如果您不希望提示它们,则只需不要使用Deployment Toolkit。

如果他们已经安装了合适的JVM,那么您的applet将会运行。如果没有,页面的其余部分应该正常加载。

答案 2 :(得分:0)

您可以使用deployJava.js中的getJREs功能。