applet,object 以及embed 标签的运用

hurbai 2012-12-27

前言

这篇文章介绍了怎样把Javaapplets程序嵌入到网页中去。此外,还提供了部署applet程序到内网或者外网、不同浏览器下的使用等指导内容。

总则

如何部署applet取决于客户访问网页的方式以及使用的浏览器类型。注意这一点以后,按以下步骤进行操作。

针对内网使用还是外网使用:如果网页是通过外网访问,使用applet标签;如果是内网,可以使用object或者embed标签。

针对不同的浏览器类型:object标签只能支持IE浏览器;而embed标签只支持Mozilla浏览器。

如果您必须把applet部署在一个支持多种浏览器的环境中,请参阅本文后半部分:applet在多浏览器环境下的部署。

使用applet标签

针对多浏览器环境,要使用applet标签。关于applet标签规范约束,请参阅W3网页标准。

注明:网页标准规定反对使用applet标签,建议用object标签替代。但是标准中关于浏览器如何支持object标签嵌入applet程序的说明是模糊的,而且浏览器产品对object标签的支持也很混乱。因此sun公司推荐还是使用applet标签把applet程序部署在各种平台下的浏览器中。

applet标签使用示例:

<applet code=Applet1.class width="200" height="200">
    Your browser does not support the <code>applet</code> tag.
</applet>

对于无论IE还是Mozilla系列的浏览器,如果已经安装了java插件,applet就可以运行。

注:applet标签不支持jre的自动安装。

使用object标签

object标签仅仅支持IE浏览器用户。关于object标签规范约束,请参阅W3网页标准。

object标签使用示例:

<OBJECT 
  classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
  width="200" height="200">
  <PARAM name="code" value="Applet1.class">
</OBJECT>

classid属性指定了使用的Java插件的版本。下面的代码是classid属性的一般用法。代码的作用是命令IE浏览器使用安装的最新版本的Java插件。

classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"

可以使用下面代码替换classid值:

classid="clsid:CAFEEFAC-xxxx-yyyy-zzzz-ABCDEFFEDCBA"

其中,"xxxx","yyyy",以及"zzzz"是4个数字,用来指出要使用的Java插件的版本。比如,如果使用Java插件1.5.0,可以这样定义:

classid="clsid:CAFEEFAC-0015-0000-0000-ABCDEFFEDCBA"

codebase属性定义了如何下载JRE。codebase属性有两种写法:

codebase=<URL>

codebase=<URL>#Version=major,minor,micro,update

第一种写法表示,如果classid中指定的jre没有安装,客户端会自动下载URL中指定的JRE下载地址。第二种写法表示,如果codebase中指定的jre版本高于classid属性指定的jre版本,客户端会立即根据给定的URL下载JRE。下面代码示例中说明了如何使用codebase属性自动安装sun官网公布的jre:

<object 
  classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
  width="200" height="200"
  codebase="http://java.sun.com/products/plugin/autodl/
           jinstall-1_5_0-windows-i586.cab#Version=1,5,0,0">
  <param name="code" value="Applet1.class">
</object>

注明:codebase=http://java.sun.com...一行中的内容,为了可读性考虑被分为两行,实际中必须显示在一整行中。sun公司提供每个版本的jre下载。

使用embed标签

使用embed标签仅仅可以把applet应用程序部署到Mozilla系列的浏览器中。embed标签使用示例:

<embed code="Applet1.class"
  width="200" height="200"
  type="application/x-java-applet;version=1.5.0"
  pluginspage="http://java.sun.com/j2se/1.5.0/download.html"/>

type属性可以有两种写法:

type="application/x-java-applet;version=1.5.0"

type="application/x-java-applet;jpi-version=1.5.0_01

使用第一种写法中,指明了使用本标签要求的最低版本的MIME类型:application/x-java-applet;version=1.5.0。如果JRE版本号不低于指定的版本,就可以使用。否则客户端会自动跳转到pluginspage属性指定的URL地址。第二种写法中,客户端安装的JRE必须是给定的jpi-version(本例中是1.5.0_01),否则客户端会直接跳转到pluginspage属性指定的URL地址页面。

applet应用程序在多浏览器环境中的部署。

可以通过纯HTML或者JavaScript可以把applet程序部署在无论是IE还是Mozilla系列浏览器中。

使用纯HTML

部署applet到多浏览器环境时注意,IE浏览器要能识别object标签,而且要忽视comment标签;而Mozilla系列浏览器要能忽略带有classid属性的object标签,要能解释comment标签的内容。示例:

<object 
  classid="clsid:CAFEEFAC-0015-0000-0000-ABCDEFFEDCBA"
  <param name="code" value="Applet1.class">
    <comment>
      <embed code="Applet1.class"
        type="application/x-java-applet;jpi-version=1.5.0">
        <noembed>
          No Java Support.
        </noembed>
      </embed>
    </comment>
  </object>

使用JavaScript

使用JavaScript可以通过appName参数得知客户端浏览器类型;可以根据appName参数使用document.write()方法进行适配:a,如果浏览器名字是“Netscape”,写embed标签;b.如果浏览器名字是“MicrosoftInternetExplorer”,就写object标签。代码示例:

<html>
<mce:script language="Javascript"><!--
  var _app = navigator.appName;

  if (_app == 'Netscape') {
    document.write('<embed code="Applet1.class"',
                   'width="200"',
                   'height="200"',
                   'type="application/x-java-applet;version=1.5.0">');
    }
  else if (_app == 'Microsoft Internet Explorer') {
    document.write('<OBJECT ',
                   'classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"',
                   'width="200"',
                   'height="200">',
                   '<PARAM name="code" value="Applet1.class">',
                   '</OBJECT>');
    }
  else {
    document.write('Sorry, unsupported browser.
');
    }
// --></mce:script>
</html>

当然,读者也可以使用HTMLConverter工具为适应多浏览器环境进行object标签与embed标签之间的转换。

原文链接:http://java.sun.com/j2se/1.5.0/docs/guide/plugin/developer_guide/using_tags.html

转载于:

http://blog.csdn.net/defonds/article/details/4458924

相关推荐