如何将网页中的applet包含在不同的目录中?

时间:2013-11-03 17:38:08

标签: java html applet

我正在尝试使用jZebra打印小程序,并且不确定如何在不同目录中的页面中使用它。示例页面包含以下代码:

<applet 
    id="qz"
    name="QZ Print Plugin"
    code="qz.PrintApplet.class"
    width="55"
    height="55">
    <param name="jnlp_href" value="qz-print_jnlp.jnlp">
    <param name="cache_option" value="plugin">
    <param name="disable_logging" value="false">
</applet>

如果applet(qz-print.jar)和另一个文件(qz-print_jnlp.jnlp)与具有该代码的页面位于同一目录中,那么它可以正常工作。但是,如果网页位于不同的目录中,我不知道要改变什么来使其工作。这似乎是一个微不足道的问题,但我一直在寻找并找不到答案。

如果applet位于不同的目录中,我应该如何修改上面的代码以获取applet?

1 个答案:

答案 0 :(得分:2)

您正在使用的标签:

<param name="jnlp_href" value="qz-print_jnlp.jnlp">

相当于:(注意“./”):

<param name="jnlp_href" value="./qz-print_jnlp.jnlp">

Java使用绝对或相对路径,就像图像标记<img src="./foo.png />

一样

因此,如果您将applet放在一个名为“dist”的文件夹中(即http://mysite/dist/qz-print.jar),但您的页面位于另一个名为“web”的文件夹中(即http://mysite/web/mypage.html),那么您会必须将您的相对applet标记更改为:

<param name="jnlp_href" value="../dist/qz-print_jnlp.jnlp">

或者最佳地,将标记更改为jnlp的绝对路径:

<param name="jnlp_href" value="/dist/qz-print_jnlp.jnlp">

此外,由于qz找到了加载这些标记的更好方法,我们将它们放在sample.html中。我建议您使用here中的最新版本。

在撰写本文时,使用标记的最佳方式是这样的: <applet id="qz" archive="./qz-print.jar" name="QZ Print Plugin" code="qz.PrintApplet.class" width="55" height="55"> <param name="jnlp_href" value="qz-print_jnlp.jnlp"> <param name="cache_option" value="plugin"> <param name="disable_logging" value="false"> <param name="initial_focus" value="false"> <param name="separate_jvm" value="true"> </applet><br />

请注意,应该更新归档变量以及jnlp标记。

从您使用的样本到我上面提供的样本的三个变化是:

  1. jQuery focus()事件的初步焦点窃取预防
  2. archive=标记,用于与某些版本的Safari兼容。
  3. separate_jvm标记用于在页面加载时加载Java Framework的新实例,这似乎解决了Java 8的一些零星加载问题。
  4. 最后,如果您的客户端仍然运行Java 6,我建议您使用sample.html中的deployQZ();,而不是使用Oracle的deployJava.js脚本进行Java客户端版本检测。

    -Tres

相关问题