我正在尝试使用jZebra打印applet,但不确定如何从不同目录中的页面使用它。该示例页面具有以下代码:
<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>
如果小程序(qz-print.jar)和另一个文件(qz-print_jnlp.jnlp)与包含该代码的页面位于同一目录中,则可以正常工作。但是,如果网页位于其他目录中,我不知道要进行哪些更改才能使其正常工作。看来这是一个琐碎的问题,但我一直在搜索,但找不到答案。
当小程序位于不同目录中时,如何修改上面的代码以使小程序进入网页?
最佳答案
您正在使用的标签:
<param name="jnlp_href" value="qz-print_jnlp.jnlp">
等效于:(注意“ ./”):
<param name="jnlp_href" value="./qz-print_jnlp.jnlp">
Java使用绝对或相对路径,就像图像标签
<img src="./foo.png />
因此,如果您将小程序放置在一个名为“ dist”(即
http://mysite/dist/qz-print.jar
)的文件夹中,但页面位于另一个名为“ web”(即http://mysite/web/mypage.html
)的文件夹中,则必须更改相对的小程序标记对此:<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标签也应更新。
从您正在使用的示例到我上面提供的示例的三个更改是:
jQuery focus()事件的初始焦点窃取预防
archive=
标记,用于与某些版本的Safari兼容。separate_jvm
标记用于在页面加载时加载Java Framework的新实例,这似乎解决了Java 8偶尔出现的加载问题。最后,如果您的客户端仍在运行Java 6,我建议您改用sample.html中的
deployQZ();
,它使用Oracle的deployJava.js
脚本进行Java客户端版本检测。-特雷