您的位置:首页 > 移动开发 > Objective-C

Using OBJECT, EMBED and APPLET Tags in Java Plug-in

2008-09-09 17:01 495 查看
from : http://doc.javanb.com/javasdk-docs/guide/plugin/developer_guide/using_tags.html#codebase
This chapter includes the following topics:

Introduction

JavaTM Plug-in in IE on Windows

Java Plug-in in NavigatorTM on Windows or SolarisTM operating environments

Java Plug-in in IE and Navigator

Java Plug-in Anywhere

Summary

Introduction

This document explains the tagging structure, involving
OBJECT
and
EMBED
tags, required by Java Plug-in. It is intended for web authors who want to manually insert Java Plug-in tags in their HTML pages.

Notes

There is a Java Plug-in HTML Converter, available free-of-charge from Sun Microsystems, that can automatically generate the tagging structure. It is highly recommended that most web authors use it.

This converter can convert pages into any of the formats described below.

For a complete list of JRE releases that can be autodownloaded via
.cab
files, as mentioned below, see Autodownload Files (Windows Only).
Applets are normally specified in an HTML file as follows:
<APPLET code="XYZApp.class" codebase="html/" align="baseline"
width="200" height="200">
<PARAM name="model" value="models/HyaluronicAcid.xyz">
No Java 2 SDK, Standard Edition v 1.4.2 support for APPLET!!
</APPLET>
And normally the
APPLET
tag specifies information about the applet, while the
<PARAM
> tags, located between the
<APPLET>
and
</APPLET>
tags, store per-instance applet information.
However, an APPLET is rendered by the browser and there is no easy way to interrupt the browser and force it to use Sun's Java Runtime Environment (JRE) to run the applet. To force the browser to do so, however, you may use a special Java Plug-in tagging structure—involving the
OBJECT
or
EMBED
tag or both, as described below—in place of the usual
APPLET
tag in an your HTML pages. This will cause the browser to launch Java Plug-in, which will then run the applet using Sun's JRE.
For various combinations of browsers and platforms, the following sections tell you exactly what you need to do

Note on Version Numbers

Product version numbers are of the form:

n1.n2.n3_n4n5

where
n1.n2
is the major version number, the
n3
is the minor version number (also referred to as the maintenance version number), and
n4n5
is the patch version number (also referred to as the update version number).
The version numbers used in the examples below refer to the
1.4
major release with minor release number of
2
and, at times, hypothetical patch number of
mn
. Do not put hypothetical values into actual HTML for web pages.

Java Plug-in in IE on Windows

To use Java Plug-in in IE on Windows, use the OBJECT tag. The following is an example of mapping an APPLET tag to a Java Plug-in tag:

Original
APPLET
tag:

<APPLET code="XYZApp.class" codebase="html/" align="baseline"
width="200" height="200">
<PARAM name="model" value="models/HyaluronicAcid.xyz">
No Java 2 SDK, Standard Edition v 1.4.2 support for APPLET!!
</APPLET>

New
OBJECT
tag:

<OBJECT classid="clsid:CAFEEFAC-0014-0002-0000-ABCDEFFEDCBA"
width="200" height="200" align="baseline"
codebase="http://java.sun.com/products/plugin/autodl/jinstall-1_4_2-windows-i586.cab#Version=1,4,2,0">
<PARAM name="code" value="XYZApp.class">
<PARAM name="codebase" value="html/">
<PARAM name="type" value="application/x-java-applet;jpi-version=1.4.2">
<PARAM name="model" value="models/HyaluronicAcid.xyz">
<PARAM name="scriptable" value="true">
No Java 2 SDK, Standard Edition v 1.4.2 support for APPLET!!
</OBJECT>

Note

For static versioning, set
codebase
equal to:

http://java.sun.com/products/plugin/autodl/<.cab file for the version you want>

For example, for static versioning for the 1.4.2 release (which uses
classid
of
clsid:CAFEEFAC-0014-0002-0000-ABCDEFFEDCBA
), set
codebase
to:

http://java.sun.com/products/plugin/autodl/jinstall-1_4_2-win.cab

For a complete list of JRE releases that can be autodownloaded via
.cab
files, seeAutodownload Files (Windows Only).
For dynamic versioning (which uses
classid
of
clsid:8AD9C840-044E-11D1-B3E9-00805F499D93
), set codebase equal to:

http://java.sun.com/products/plugin/autodl/jinstall-<major version of family in underscore format>-windows-i586.cab#Version=<full version number for lowest version in family in comma-separated format>

If no version of Java is installed, or a version less than the major version of the family is installed, then this will cause automatic redirection to the latest
.cab
for the latest version in the family.
For example, for the 1.4.2 release you would set
codebase
as follows:

http://java.sun.com/products/plugin/autodl/jinstall-1_4-windows-i586.cab#Version=1,4,0,0

If the user had version 1.3.1 installed, then the latest version in the 1.4 family would be downloaded and installed. But if any version in the 1.4 family were installed, then it would be used and no download would take place.
Note that the autodownload
.cab
files can change as patch releases are released. See below for more about the interpretation of
codebase
.
Note that the OBJECT tag contains similar information to the APPLET tag. It is sufficient to launch Java Plug-in in IE. The classid in the OBJECT tag is the class identifier for Java Plug-in itself. When IE renders this class identifier in the OBJECT tag, it will try to load Java Plug-in into the browser. See classid attribute below for information about versioning.

There are several attributes in the OBJECT tag, such as width, height and align, that are mapped directly from the corresponding attributes in the APPLET tag. These contain formatting information that IE will use to position Java Plug-in. Since this information is mapped directly without changes, the position and appearance of the applets using Java Plug-in should be the same as those applets using the APPLET tag.
Not all attributes in the APPLET tag can be mapped to the OBJECT tag attributes. For example, the attributes code andcodebase in the APPLET tag are not mapped into the OBJECT tag attribute. Instead, the attribute code is mapped into thePARAM code because, according to the w3c.org HTML specification, the attribute code does not exist in the OBJECT tag. There are other attributes that do not correspond in the OBJECT tag attributes. These attributes, with one exception, should be mapped to PARAM tags.

Note

Duplicate parameter names should never be used with the
OBJECT
tag in Java Plug-in.
The one exception is the codebase attribute. In the APPLET tag, the codebase attribute represents the location from which to download additional class and jar files. However, in the OBJECT tag, the codebase attribute represents the location from which to download Java Plug-in when it is not found on the local machine. Because the codebase attribute has two different meanings in the APPLET and OBJECT tags, the
codebase
attribute in the
APPLET
tag is mapped into aPARAM codebase in the OBJECT tag to resolve the conflict.
In the above example, the code and codebase attributes in the APPLET tag are mapped into the OBJECT tag parameters. ThePARAM code identifies the applet, and its value should be the same as the code attribute in the APPLET tag. The PARAM codebase identifies the
codebase
of the applet. Java Plug-in knows where to download the applet or JavaBeans component because it can read this information from the parameters. The parameter type is not mapped from the APPLET tag, but it is required in the OBJECT tag. It identifies the type of the Java executable, such as an applet or a JavaBean, so that Java Plug-in knows how to initialize the Java executable. These three PARAM tags (code, codebase, and type) in the above example are specified for Java Plug-in. They do not exist in the PARAM of the original APPLET tag. Note that the modelparameter within the OBJECT tag is identical to the model parameter inside the APPLET tag. Except for these first three parameters specified for Java Plug-in, the remainder of the parameters are the same as those inside the APPLET tag.
A new addition for Java Plug-in 1.3 (and valid in 1.4.x) was the PARAM scriptable. This was added to improve performance of applets that do not require the use of JavaScript or VBScript. The value should be true if the applet requires scripting support and false if it does not. The value is false by default.
Please note that PARAM scriptable is not the same as the PARAM mayscript. mayscript provides support for communication from Java applets to JavaScript only, while scriptable allows communication from JavaScript to Java applets in Internet Explorer only.
The text "No Java 2 SDK, Standard Edition v 1.4.2 support for APPLET!!" in the APPLET tag is mapped inside the <OBJECT>and </OBJECT> tags. Originally, this text is displayed only if the browser does not have Java support. By mapping it inside the OBJECT tag, this text will be displayed if the browser does not support the OBJECT tag.
The APPLET-to-OBJECT tag attributes mapping is as follows:
Attribute NameAPPLETTag SupportOBJECTTag SupportAttribute Mapping to OBJECT Tag
align
XX
OBJECT
attribute
align
alt
X
archive
X
PARAM
element
archive
code
XX
PARAM
element
code
codebase
XX
PARAM
element
codebase
height
XX
OBJECT
attribute
height
hspace
XX
OBJECT
attribute
hspace
name
XX
OBJECT
attribute
name
,
PARAM
element
name

This case is an exception. The
name
attribute in the orginal
APPLET
element must be mapped both to the
name
attribute in the
OBJECT
element and to a nested
PARAM
. If the original applet were as follows:
<APPLET name="clock" ...>
</APPLET>

Then the mapping would be:
<OBJECT name="clock" ...>
<PARAM name="name" value="clock">
</OBJECT>
object
X
PARAM
element
object
title
XX
OBJECT
attribute
title
vspace
XX
OBJECT
attribute
vspace
width
XX
OBJECT
attribute
width
mayscript
X
PARAM
element
mayscript
Some
OBJECT
attributes and nested
PARAM
elements are special to the OBJECT tag. They are the following:
Attribute/
PARAM
Meaning in OBJECT tag
Attribute
classid
It should always have the same value for dynamic version support, i.e.
clsid:8AD9C840-044E-11D1-B3E9-00805F499D93
. For static version support it will have a unique value for the version, e.g.,
clsid:CAFEEFAC-0014-0002-0000-ABCDEFFEDCBA
.
For more information about static vs. dynamic versioning, see Encountering OBJECT, EMBED, and APPLET Tags With Different Plug-in Versions and Browsers.
Note: The example above uses static versioning.
Attribute
codebase
It should be a full URL pointing to a
.cab
file somewhere on the network. It's purpose is to allow downloading and installation of Plug-in if either no version of Plug-in is installed on a user's computer or if no appropriate version of Plug-in is installed. The URL should, by default, point to a page on the Java Software website.
Examples:
In the above example,
codebase
is:
codebase="http://java.sun.com/products/plugin/autodl/jinstall-1_4_2-windows-i586.cab#Version=1,4,2,0"

Note that this was for static versioning and that the version number appended to the
.cab
file indicates that
1.4.2
version of Plug-in needs to be installed on the user's computer, otherwise an attempt will be made to download and install it.
For dynamic versioning,
codebase
would be as follows:
codebase="http://java.sun.com/products/plugin/autodl/jinstall-1_4-windows-i586.cab#Version=1,4,0,0"

The appended version number indicates that if the user has version
1.4.0
or higher of the Plug-in installed on the computer, no download will occur. In other words, if the installed Plug-in is in the 1.4 family (major version
1.4
), then it will run. If the installed version is lower, however, then an attempt will be made to download and install a newer version via the
.cab
file.
PARAM
element
type
The
value
for parameter
type
should be as follows:

"application/x-java-<object_type>;<version_type>=<implementation_version>"

where

object_type
is
applet
or
bean
;
version_type
is
jpi-version
for static versioning or
version
for dynamic versioning;
implementation_version
is Implementation-Version as defined inAppendix 6: Sun-Supported
Specification-Version
and
Implemenation-Version
Formats
.
For more information about static vs. dynamic versioning, see Encountering OBJECT, EMBED, and APPLET Tags With Different Plug-in Versions and Browsers.
Examples:
For an applet deployed for static versioning with Plug-in version
1.4.1
patch release
02
,
value
for
type
would be as follows:

"application/x-java-applet;jpi-version=1.4.1_02"

For a bean deployed for dynamic versioning with Plug-in version
1.4.1
patch release
03
,
value
for
type
would be:

"application/x-java-bean;version=1.4"

This is because for dynamic versioning only the major version number is checked; i.e., if the installed Plug-in is in the major version family, no download is required.
PARAM
element
codebase
Specifies the base URL of the applet. The URL can be relative or absolute but it should be in the domain of the current document. This
PARAM
element is required only if the applet is not located in the same directory as the document.
PARAM
element
code
Specifies the name of the Java applet or JavaBeans component. It cannot be used with
PARAM
element object nested inside the same OBJECT tag.
PARAM
element
scriptable
Specifies whether the applet is scriptable from the HTML page using JavaScript or VBScript. The value can be either
true
or
false
. This attribute is new in Java Plug-in 1.4.
PARAM
element
object
Specifies the name of the serialized Java applet or JavaBeans component. It cannot be used with
PARAM
element code nested inside the same OBJECT tag. This attribute is optional.
PARAM
element
archive
Specifies the name of the Java archive. This attribute is optional.
PARAM
element
mayscript
Specifies whether the applet is allowed to access
netscape.javascript.JSObject
. The value can be either
true
or
false
. This attribute is optional.
If the original
APPLET
element uses attributes type, codebase, code, object or archive, and also has nested
PARAM
element attributes type, codebase, code, object or archive, there will be a problem with the direct mapping of the
APPELET
attributes to
PARAM
attributes , as there will then be
PARAM
elements with duplicate
name
attributes, e.g.,
If the orginal applet were as follows:

<APPLET codebase = "a/b/c ...>
<PARAM name="codebase" value="my.jar">
</APPLET>

Then the direct mapping would be:

<OBJECT ...>
<PARAM name="codebase" value="a/b/c">
<PARAM name="codebase" value="my.jar">
</OBJECT>

To avoid this problem, any
APPLET
attribute that has a corresponding
PARAM
element in the orignal applet should be mapped as shown below.
Original attribute in the
APPLET
element
New
PARAM
attribute with
OBJECT
element
codejava_code
codebasejava_codebase
archivejava_archive
objectjava_object
typejava_type
These new
PARAM
element attribute names should be used only when necessary. If both the new and original
PARAM
names exist in the same OBJECT tag, the values associated with the new
PARAM
element names are used by Java Plug-in to load the applet or JavaBean.

Example

Suppose the orginal applet was as follows:

<APPLET codebase = "a/b/c ...>
<PARAM name="codebase" value="my.jar">
</APPLET>

Then the mapping should be as shown below:

<OBJECT ...>
<PARAM name="java_codebase" value="a/b/c">
<PARAM name="codebase" value="my.jar">
</OBJECT>

Java Plug-in in Netscape Navigator on Windows or SolarisTM operating environments

To use Java Plug-in with Netscape Navigator 4.x on Windows or Solaris operating environments, you must use the EMBEDtag. The following example shows the mapping of a traditional APPLET tag to a Java Plug-in EMBED tag:

Original
APPLET
tag:

<APPLET code="XYZApp.class" codebase="html/" align="baseline"
width="200" height="200">
<PARAM name="model" value="models/HyaluronicAcid.xyz">
No Java 2 SDK, Standard Edition v 1.4.1 support for APPLET!!
</APPLET>

New
EMBED
tag:

<EMBED type="application/x-java-applet;jpi-version=1.4.1" width="200"
height="200" align="baseline" code="XYZApp.class"
codebase="html/" model="models/HyaluronicAcid.xyz"
pluginspage="http://java.sun.com/j2se/1.4.1/download.html">
<NOEMBED>
No Java 2 SDK, Standard Edition v 1.4.1 support for APPLET!!
</NOEMBED>
</EMBED>
Note that the EMBED tag contains similar information to the APPLET tag.It is sufficient to launch Java Plug-in in Navigator. The attribute type in the EMBED tag is used to identify the type of the Java executable, such as an applet or a bean. When Navigator renders this attribute in the EMBED tag, it will try to load Java Plug-in into the browser. Note that a version number is also appended. It is used for comparing the version installed on a user's computer and deciding if another version needs to be installed. The second table below describes this in greater detail.
In the above example, several attributes in the EMBED tag, such as width, height and align, map directly from the corresponding attributes in the APPLET tag. These contain formatting information that Navigator uses to position Java Plug-in. Since this information is mapped directly without changes, the position and appearance of the applets using Java Plug-in should be the same as those applets using the APPLET tag.
Unlike the OBJECT tag, all information must be stored inside the <EMBED> tag. No PARAM elements are used with the EMBEDtag. Therefore, all
APPLET
attributes and related
PARAM
elements must be mapped as attribute
name="value"
pairs inside the EMBED tag.
In the above example, the code and codebase attributes in the APPLET tag are mapped into the EMBED tag attributes. Attribute code identifies the applet. Its value should be the same as the code attribute in the APPLET tag. Attributecodebase identifies the codebase of the applet. Java Plug-in knows where to download the applet or JavaBeans component because it can read this information from the attributes. Also notice that the model attribute within the EMBED tag is mapped from the nested
PARAM
element model inside the APPLET tag.
Like the codebase attribute in the OBJECT tag, attribute pluginspage in the EMBED tag is used by Navigator if Java Plug-in is not installed on the user's computer, or if the wrong version of Java Plug-in is installed. It should point to the Java Plug-in Download Page on the Java Software website; or, for intranet deployment, to a page on the intranet from which Java Plug-in may be downloaded.
The text "No Java 2 SDK, Standard Edition v 1.4.1 support for APPLET!!" in the APPLET tag is mapped inside the <NOEMBED>and </NOEMBED> tags. With the traditional APPLET tag this text is displayed only if the browser does not have internal support for Java. By mapping it inside the NOEMBED tag, this text will be displayed if the browser does not support theEMBED tag, or if Navigator fails to start the Java Plug-in.
The APPLET-to-EMBED tag attributes mapping is as follows:
AttributesAPPLET tag supportEMBED tag supportAttribute map to EMBEDtag
align
XXAttribute
align
alt
XXAttribute
alt
archive
XAttribute
archive
code
XAttribute
code
codebase
XAttribute
codebase
height
XXAttribute
height
hspace
XXAttribute
hspace
name
XXAttribute
name
object
XAttribute
object
title
XXAttribute
title
vspace
XXAttribute
vspace
width
XXAttribute
width
mayscript
XAttribute
mayscript
Some attributes are special to the EMBED tag. These attributes are:
AttributeMeaning in EMBED tag
Attribute
type
type
should be as follows:

"application/x-java-<object_type>;<version_type>=<implementation_version>"

where

object_type
is
applet
or
bean
;
version_type
is
jpi-version
for static versioning or
version
for dynamic versioning;
implementation_version
is Implementation-Version as defined in Appendix 6: Sun-Supported
Specification-Version
and
Implemenation-Version
Formats
.
For more information about static vs. dynamic versioning, see Encountering OBJECT, EMBED, and APPLET Tags With Different Plug-in Versions and Browsers.
Examples:
For an applet deployed for static versioning with Plug-in version
1.4.1
patch release
02
,
type
would be as follows:

"application/x-java-applet;jpi-version=1.4.1_02"

For a bean deployed for dynamic versioning with Plug-in version
1.4.1
patch release
03
,
type
would be:

"application/x-java-bean;version=1.4"

This is because for dynamic versioning only the major version number is checked; i.e., if the installed Plug-in is in the major version family, no download is required).
Attribute
codebase
Specifies the base URL of the applet or JavaBeans component. The URL can be relative or absolute but it should be in the domain of the current document. This attribute is required only if the applet is not located in the same directory as the document.
Attribute
code
Specifies the name of the Java applet or JavaBeans component. It cannot be used with paramobject inside the same EMBED tag.
Attribute
object
Specifies the name of the serialized Java applet or JavaBeans component. It cannot be used with the code attribute inside the same EMBED tag. This attribute is optional.
Attribute
archive
Specifies the name of the Java archive. This attribute is optional.
Attribute
pluginspage
It should be a full URL pointing to an HTML page from which Java Plug-in can be downloaded. If there is no Plug-in installed on a user's computer, or if the version of the Plug-in is not the one specified via the the
type
attribute, then this page will be presented to the user.
Attribute
mayscript
Specifies whether the applet is allowed to access
netscape.javascript.JSObject
. The value can be either
true
or
false
. This attribute is optional.
Similar to the case of the OBJECT tag, if the original APPLET tag has PARAM element type, codebase, code, object, orarchive, mapping it to the EMBED tag attribute will cause a problem. To avoid this, Java Plug-in also supports the same new set of attribute names for the
EMBED
tag, as specified below:
Similar to the case of the OBJECT element, if the original
APPLET
element uses attributes type, codebase, code, objector archive, and also has nested
PARAM
element attributes type, codebase, code, object or archive, there will be a problem with the direct mapping of the
APPELET
attributes to
EMBED
attributes. To avoid this problem, Java Plug-in also supports the same new set of attribute names for the
EMBED
tag, as specified below:
Original Attribute NamesNew Attribute Names
codejava_code
codebasejava_codebase
archivejava_archive
objectjava_object
typejava_type
These new attribute names should be used only when necessary. If both new and original attribute names exist in the sameEMBED tag, the value associated with the new attribute name is used by Java Plug-in to load the applet or bean.

Java Plug-in in IE and Navigator

The new
OBJECT
element scheme described above allows a web page with an applet to use Java Plug-in with Internet Explorer, and the new
EMBED
element scheme allows a web page with an applet to use Java Plug-in with Netscape. However, changes are a web page will be browsed by both browsers. Hence, there needs to be a way to use the
OBJECT
scheme when a page is browser by Internet Explorer, and the EMBED scheme when the page is browsed by Netscape. Such a scheme is described below.

Original
APPLET
element:

<APPLET code="XYZApp.class" codebase="html/" align="baseline"
width="200" height="200">
<PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
No Java 2 SDK, Standard Editoin v 1.4 support for APPLET!!
</APPLET>

New
OBJECT
element with nested
EMBED
element:

<OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
width="200" height="200" align="baseline"
codebase="http://java.sun.com/products/plugin/1.4/jinstall-14-win32.cab#Version=1,4,0,mn">
<PARAM NAME="code" VALUE="XYZApp.class">
<PARAM NAME="codebase" VALUE="html/">
<PARAM NAME="type" VALUE="application/x-java-applet;jpi-version=1.4">
<PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
<PARAM NAME="scriptable" VALUE="true">
<COMMENT>
<EMBED type="application/x-java-applet;jpi-version=1.4" width="200"
height="200" align="baseline" code="XYZApp.class"
codebase="html/" model="models/HyaluronicAcid.xyz"
pluginspage="http://java.sun.com/products/plugin/1.4/plugin-install.html">
<NOEMBED>
No Java 2 SDK, Standard Edition v 1.4 support for APPLET!!
</NOEMBED>
</EMBED>
</COMMENT>
</OBJECT>
Because IE understands the <OBJECT> tag, it will try to launch Java Plug-in. Notice that the <COMMENT> tag is a special HTML tag understood only by IE. IE ignores text between the <COMMENT> and </COMMENT> tags. In effect, the above tags actually become:
Note that the
<COMMENT>
element is unique to IE. IE ignores text between the
<COMMENT>
and
</COMMENT>
elements. For IE, then, the above structure of elements looks like this:
<OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
width="200" height="200" align="baseline"
codebase="http://java.sun.com/products/plugin/1.4/jinstall-14-win32.cab#Version=1,4,0,mn">
<PARAM NAME="code" VALUE="XYZApp.class">
<PARAM NAME="codebase" VALUE="html/">
<PARAM NAME="type" VALUE="application/x-java-applet;jpi-version=1.4">
<PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
<PARAM NAME="scriptable" VALUE="true">
</OBJECT>
This is identical to the new OBJECT tag example described above.
Now because Navigator understands neither the OBJECT nor the COMMENT elements, Navigator 4 views the above structure as follows:
<EMBED type="application/x-java-applet;jpi-version=1.4" width="200"
height="200" align="baseline" code="XYZApp.class"
codebase="html/" model="models/HyaluronicAcid.xyz"
pluginspage="http://java.sun.com/products/plugin/1.4/plugin-install.html">
<NOEMBED>
No Java 2 SDK, Standard Edition v 1.4 support for APPLET!!
</NOEMBED>
</EMBED>
This is identical to the new EMBED element example described above.
Thus you can use the new element structure—
OBJECT
element with nested
EMBED
element—to invoke Java Plug-in when either IE or Netcape encounters a page with an applet. The is the recommeded format to use.

Java Plug-in Anywhere

Warning!

The material in this section is out of date. It will be updated in the future. The description of the script below corresponds to the Extended option with the HtmlConverter. It is recommended that you do not use this option at this time. The Standard option is the recommended option.
In most environments, Internet or intranet, an HTML page is likely to be viewed on different browsers on different platforms. Ideally, then, you should activate Java Plug-in only on the right browser-platform combination. Otherwise, an applet should use the browser's default JVM. You can achieve this using the following Java Plug-in format:

Original
APPLET
element:

<APPLET code="XYZApp.class" codebase="html/" align="baseline"
width="200" height="200">
<PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
No Java 2 SDK, Standard Edition v 1.4 support for APPLET!!
</APPLET>

New-style format:

The following is an example of an equivalent Java Plug-in format. (The example includes comments.)
<!-- The following code is specified at the beginning of the <BODY> tag. -->
<SCRIPT LANGUAGE="JavaScript"><!--
var _info = navigator.userAgent;
var _ns = false;
var _ie = (_info.indexOf("MSIE") > 0 && _info.indexOf("Win") > 0
&& _info.indexOf("Windows 3.1") < 0);
//--></SCRIPT>
<COMMENT><SCRIPT LANGUAGE="JavaScript1.1"><!--
var _ns = (navigator.appName.indexOf("Netscape") >= 0
&& ((_info.indexOf("Win") > 0 && _info.indexOf("Win16") < 0
&& java.lang.System.getProperty("os.version").indexOf("3.5") < 0)
|| _info.indexOf("Sun") > 0));
//--></SCRIPT></COMMENT>

<!-- The following code is repeated for each APPLET tag -->
<SCRIPT LANGUAGE="JavaScript"><!--
if (_ie == true) document.writeln('
<OBJECT
classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
width="200" height="200" align="baseline"
codebase="http://java.sun.com/products/plugin/1.4/jinstall-14-win32.cab#Version=1,4,0,mn">
<NOEMBED><XMP>');
else if (_ns == true) document.writeln('
<EMBED
type="application/x-java-applet;jpi-version=1.4" width="200" height="200"
align="baseline" code="XYZApp.class" codebase="html/"
model="models/HyaluronicAcid.xyz"
pluginspage="http://java.sun.com/products/plugin/1.4/plugin-install.html">
<NOEMBED><XMP>');
//--></SCRIPT>
<APPLET code="XYZApp.class" codebase="html/" align="baseline"
width="200" height="200">
</XMP>
<PARAM NAME="java_code" VALUE="XYZApp.class">
<PARAM NAME="java_codebase" VALUE="html/">
<PARAM NAME="java_type" VALUE="application/x-java-applet;jpi-version=1.4">
<PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
<PARAM NAME="scriptable" VALUE="true">
No Java 2 SDK, Standard Edition v 1.4 support for APPLET!!
</APPLET></NOEMBED></EMBED>
</OBJECT>

<!--
<APPLET code="XYZApp.class" codebase="html/" align="baseline" width="200" height="200"> <PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz"> No Java 2 SDK, Standard Edition v 1.4 support for APPLET!! </APPLET>
-->
Although this tag seems complicated compared to the old APPLET tag, it is not. Most of the Java Plug-in tag is the same regardless of the applet used. For the majority of cases, a webmaster can copy and paste the Java Plug-in tag.
The first block of the script extracts the browser and platform. You must determine the browser and platform on which the applet is running. You do this by using JavaScriptTM to extract first the browser name, then the platform. This is done once per HTML document.
The second block of the script replaces the APPLET tag. You must replace each APPLET tag with a similar block of code. The script replaces the APPLET tag with either an EMBED tag or OBJECT tag, depending on the browser. You use the OBJECTtag for IE and the EMBED tag for Netscape Navigator. Finally, the original APPLET tag is included as a comment at the end. It is always a good idea to keep the original APPLET tag in case you want to remove the Java Plug-in invocation.
The first JavaScript establishes the browser and the platform on which the browser is running. You must do this because, currently, Java Plug-in supports only Windows 95, Windows 98, Windows NT 4.0, and Solaris. Note that Windows NT 3.51 is the only Win32 platform that Java Plug-in does not support. Java Plug-in should be invoked only on the supported browser and platform. The script sets the variable _ie to true if the browser is Internet Explorer. It sets the variable _ns to true if the browser is Navigator. (Note that all variable names in the JavaScript start with "_". This is done to avoid conflicting with other JavaScript variables in the same page.)
To detect the right browser, the JavaScript evaluates three strings that are within the JavaScript's Navigator object:userAgent, appVersion, and appName. These strings contain information about the browser and the platform. By looking at some examples of the string userAgent, you can see how to evaluate userAgent and use it to determine the browser. The following are some examples of the userAgent string for different platforms as it appears in Internet Explorer.
Platform and BrowserJavaScript's Navigator.userAgent string
Windows 2000 w/IE 5.0"Mozilla/4.0 (compatible; MSIE 5.01; Window NT5.0)
Windows NT 4.0 w/IE 4.0"Mozilla/4.0 (compatible; MSIE 4.0; Windows NT)"
Windows NT 4.0 w/IE 3.02"Mozilla/2.0 (compatible; MSIE 3.02; Windows NT)"
Windows 95 w/IE 4.0"Mozilla/4.0 (compatible; MSIE 4.0; Windows 95)"
Windows 95 w/IE 3.02"Mozilla/2.0 (compatible; MSIE 3.02; Windows 95)"
Windows NT 3.51 w/IE 4.0"Mozilla/4.0 (compatible; MSIE 4.0; Windows 3.1)"
Windows 3.1 w/IE 4.0"Mozilla/4.0 (compatible; MSIE 4.0; Windows 3.1)"
Windows NT 4.0 w/Navigator 4.04"Mozilla/4.04 [en] (WinNT; I)"
Windows NT 4.0 w/Navigator 3.04"Mozilla/3.04 (WinNT; I)"
Windows NT 3.51 w/Navigator 4.04 "Mozilla/4.04 [en] (WinNT; I)"
Windows NT 3.51 w/Navigator 3.04 "Mozilla/3.04 (WinNT; I)"
Windows 95 w/Navigator 4.03"Mozilla/4.03 [en] (Win95; I)"
Windows 95 w/Navigator 3.03"Mozilla/3.03 (Win95; I)"
Solaris 2.6 w/Navigator 4.02"Mozilla/4.02 [en] (X11; l; SunOS 5.6 sun4u)
Note that in each case the substring "MSIE" is always in the userAgent string in Internet Explorer. Also, the userAgentstring in IE under Windows 3.1 and Windows 3.51 would contain the substring "Windows 3.1" because IE in these platforms is 16-bit. While IE 4 is also available on Solaris and Mac, in these versions the userAgent string does not contain the substring "Win". In addition, IE on Windows CE does not support JavaScript. This can be summarized as follows:
userAgent string / BrowsersWindows 3.1 w/ IE 3/4Windows NT 3.51 w/ IE 3/4Windows 95 w/ IE 3/4Windows NT 4.0 w/ IE 3/4Windows CE w/ IEMac w/ IEUNIX w/ IEOther browsers on any platform
contains "MSIE"XXXXXX
contains "Win"XXXX
does not contain "Windows 3.1"XXXXX
The above table shows that only Windows 95 and Windows NT 4.0 with IE can pass the Java Plug-in browser and platform requirements. However, this logic makes no assumptions about future releases of IE or future releases of Windows with IE. As long as the userAgent string contains "MSIE" and "Win", the above code should work in future releases of IE on Win32.
The above logic summarizes into the following:
<SCRIPT LANGUAGE="JavaScript"><!--
var _info = navigator.userAgent;
var _ie = (_info.indexOf("MSIE") > 0 && _info.indexOf("Win") > 0
&& _info.indexOf("Windows 3.1") < 0);
//--></SCRIPT>
It is harder to detect Navigator on the right platform. Using just JavaScript, there is no way to determine if the browser is running on the Windows NT 3.51 or Windows NT 4.0 operating platform. (Refer to the above table and examine the userAgent string. Notice that the userAgent strings in Windows NT 3.51 and Windows NT 4.0 operating platforms are the same in Navigator.) It is important to make this distinction because Java Plug-in supports only the Windows NT 4.0 operating platform. To run Java Plug-in on the right platform, you must use LiveConnect in Navigator to determine the OS version number. This can be summarized as follows:
Testing logic / BrowsersWindows 3.1 w/ NS 3/4Windows NT 3.51 w/ NS 3/4Windows 95 w/ NS 3/4Windows NT 4.0 w/ NS 3/4NS on SolarisIE on SolarisNS on other platformIE on other platformOther browsers on any platform
appName contains "Netscape"XXXXXX
userAgent contains "Win"XXXXX
userAgent does not contain "Win16"XXXXX
os.version does not contain 3.5XXXDepends on OS
userAgent contains "Sun"XX
The above logic translates into the following code:
<SCRIPT LANGUAGE="JavaScript"><!--
var _info = navigator.userAgent; var _ns = false;
//--></SCRIPT>
<COMMENT><SCRIPT LANGUAGE="JavaScript1.1"><!--
var _ns = (navigator.appName.indexOf("Netscape") >= 0
&& ((_info.indexOf("Win") > 0  && _info.indexOf("Win16") < 0
&& java.lang.System.getProperty("os.version").indexOf("3.5") < 0)
|| _info.indexOf("Sun") > 0));
//--></SCRIPT></COMMENT>

Referring to the previous table, note that only Windows 95, Windows NT 4.0, and Solaris operating environments with Navigator pass all the tests. Because LiveConnect is used to get the OS version number and only Navigator supports LiveConnect, a JavaScript that accesses LiveConnect will not be understood by IE. To prevent this from causing a problem, you block out this piece of the script using the COMMENT tag since COMMENT is an IE-specific comment tag. The text between the COMMENT tag is ignored by IE but not by Navigator. In addition, you must specify the script language as JavaScript1.1 to block this out if the browser is Navigator 2.
At this point, the above logic for IE and Navigator summarizes to a script that should look as follows:
<!-- The following code is specified at the beginning of the <BODY> tag. -->
<SCRIPT LANGUAGE="JavaScript"><!--
var _info = navigator.userAgent; var _ns = false;
var _ie = (_info.indexOf("MSIE") > 0 && _info.indexOf("Win") > 0
&& _info.indexOf("Windows 3.1") < 0);
//--></SCRIPT>
<COMMENT><SCRIPT LANGUAGE="JavaScript1.1"><!--
var _ns = (navigator.appName.indexOf("Netscape") >= 0
&& ((_info.indexOf("Win") > 0 && _info.indexOf("Win16") < 0
&& java.lang.System.getProperty("os.version").indexOf("3.5") < 0)
|| _info.indexOf("Sun") > 0));
//--></SCRIPT></COMMENT>
Remember that this block of JavaScript should be put at the top of the <BODY> of the HTML file. It is put at the top so that other JavaScripts can reference the variables _ie and _ns. This JavaScript is the same in all HTML files, and it is only needed once for each HTML body.
The second block of HTML tags are actually the corresponding OBJECT and EMBED tags that are mapped from the data in theAPPLET tag. Note that JavaScript outputs the OBJECT tag when the browser is IE running on the Windows 95, Windows 98 or Windows NT 4.0 operating environments. If the browser is Navigator 3/4 on Windows 95, Windows 98, Windows NT 4.0, or Solaris operating environments, then JavaScript also outputs the EMBED tag, though with a slightly different syntax. Recall that the mechanism for detecting the browser and the platform has been described in the above section. (Tags <!-- and --> are used for comments in HTML.)

Original
APPLET
tag:

<APPLET code="XYZApp.class" codebase="html/" align="baseline"
width="200" height="200">
<PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
No Java 2 SDK, Standard Edition v 1.4 support for APPLET!!
</APPLET>

New style tag:

<SCRIPT LANGUAGE="JavaScript"><!--
if (_ie == true) document.writeln('<OBJECT
classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
width="200" height="200" align="baseline"
codebase="http://java.sun.com/products/plugin/1.4/jinstall-14-win32.cab#Version=1,4,0,mn">
<NOEMBED><XMP>');
else if (_ns == true) document.writeln('<EMBED
type="application/x-java-applet;jpi-version=1.4" width="200" height="200"
align="baseline" code="XYZApp.class" codebase="html/"
model="models/HyaluronicAcid.xyz"
pluginspage="http://java.sun.com/products/plugin/1.4/plugin-install.html">
<NOEMBED><XMP>');
//--></SCRIPT>
<APPLET code="XYZApp.class" codebase="html/" align="baseline"
width="200" height="200"></XMP>
<PARAM NAME="java_code" VALUE="XYZApp.class">
<PARAM NAME="java_codebase" VALUE="html/">
<PARAM NAME="java_type" VALUE="application/x-java-applet;jpi-version=1.4">
<PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">LUE="models/HyaluronicAcid.xyz">
<PARAM NAME="scriptable" VALUE="true">
No Java 2 SDK, Standard Edition v 1.4 support for APPLET!!
</APPLET></NOEMBED></EMBED></OBJECT>
Note that the original APPLET tag is also mapped in the new Java Plug-in tag. This is done because Java Plug-in is intended to be used only on supported platforms. Leaving the APPLET tag in the script ensures that browsers that do not support Java Plug-in, or browsers that do not support JavaScript can gracefully handle the applet using the default JVM. HotJava Browser, IE, and Navigator on non-Java Plug-in supported platforms, or browsers without JavaScript support, read the above tags as follows:
<APPLET code="XYZApp.class" codebase="html/" align="baseline"
width="200" height="200"></XMP>
<PARAM NAME="java_code" VALUE="XYZApp.class">
<PARAM NAME="java_codebase" VALUE="html/">
<PARAM NAME="java_type" VALUE="application/x-java-applet;jpi-version=1.4">
<PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
<PARAM NAME="scriptable" VALUE="true">
No Java 2 SDK, Standard Edition v 1.4 support for APPLET!!
</APPLET></NOEMBED></EMBED></OBJECT>
These browsers ignore the tags </XMP>, </OBJECT>, </EMBED>, and </NOEMBED> as well because there is no corresponding<XMP>, <OBJECT>, <EMBED>, and <NOEMBED> tags. Because Java Plug-in is targeted for features in the Java 2 SDK, Standard Edition v 1.4 or future releases, those browsers without full Java 2 SDK 1.4 support and who do not support Java Plug-in will display the message "No Java 2 SDK, Standard Edition v 1.4 support for APPLET".
Unlike the previous examples, the mapped PARAM names contain java_code, java_codebase, and java_type instead of code,codebase, and type. This is necessary because specifying code and codebase in the <PARAM> inside the <APPLET> and</APPLET> tag causes problems in some browsers.
IE on Windows reads the tags as follows:
<OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
width="200" height="200" align="baseline"
codebase="http://java.sun.com/products/plugin/1.4/jinstall-14-win32.cab#Version=1,4,0,mn">
<NOEMBED><XMP>
<APPLET code="XYZApp.class" codebase="html/" align="baseline"
width="200" height="200"></XMP>
<PARAM NAME="java_code" VALUE="XYZApp.class">
<PARAM NAME="java_codebase" VALUE="html/">
<PARAM NAME="java_type" VALUE="application/x-java-applet;jpi-version=1.4">
<PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
<PARAM NAME="scriptable" VALUE="true">
No Java 2 SDK, Standard Edition v 1.4 support for APPLET!!
</APPLET></NOEMBED></EMBED>
</OBJECT>

Be careful when you use the <XMP> tag. Because IE renders the <OBJECT> tag, you must disable the <APPLET> tag. If not disabled, two applets will simultaneously show up in the browser—one applet will be running in Microsoft's JVM, and the other will be running in Sun's JVM using Java Plug-in. The <XMP> tag provides a solution. The <XMP> and </XMP> tags basically transform any HTML tag that occurs between them into a stream of static text. In the above example, the <XMP>and </XMP> tags cause the browser to treat the <APPLET> tag as static text instead of an HTML tag. Because the browser ignores any static text between the <OBJECT> tag and the <PARAM> tag, the above tags actually become:
<OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
width="200" height="200" align="baseline"
codebase="http://java.sun.com/products/plugin/1.4/jinstall-14-win32.cab#Version=1,4,0,mn">
<PARAM NAME="java_code" VALUE="XYZApp.class">
<PARAM NAME="java_codebase" VALUE="html/">
<PARAM NAME="java_type" VALUE="application/x-java-applet;jpi-version=1.4">
<PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
<PARAM NAME="scriptable" VALUE="true">
No Java 2 SDK, Standard Edition v 1.4 support for APPLET!!
</OBJECT>

This is identical to the OBJECT tag example outlined above. Note that the <OBJECT> tag ignores the <NOEMBED>,</NOEMBED>, and </EMBED> tags.
Navigator on Windows operating environments reads tags as follows:
<EMBED type="application/x-java-applet;jpi-version=1.4" width="200" height="200"
align="baseline" code="XYZApp.class" codebase="html/"
model="models/HyaluronicAcid.xyz"
pluginspage="http://java.sun.com/products/plugin/1.4/plugin-install.html">
<NOEMBED><XMP>
<APPLET code="XYZApp.class" codebase="html/" align="baseline"
width="200" height="200"></XMP>
<PARAM NAME="java_code" VALUE="XYZApp.class">
<PARAM NAME="java_codebase" VALUE="html/">
<PARAM NAME="java_type" VALUE="application/x-java-applet;jpi-version=1.4">
<PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">
<PARAM NAME="scriptable" VALUE="true">
No Java 2 SDK, Standard Edition v 1.4 support for APPLET!!
</APPLET></NOEMBED></EMBED></OBJECT>
Note that the <XMP> tag is used again in the <EMBED> tag to also disable the <APPLET> tag. The <EMBED> tag ignores the<PARAM> and </OBJECT> tags as well. In effect, the above tags actually become:
<EMBED type="application/x-java-applet;jpi-version=1.4" width="200" height="200"
align="baseline" code="XYZApp.class" codebase="html/"
model="models/HyaluronicAcid.xyz"
pluginspage="http://java.sun.com/products/plugin/1.4/plugin-install.html">
<NOEMBED>
No Java 2 SDK, Standard Edition v 1.4 support for APPLET!!
</NOEMBED>
</EMBED>

This is identical to the EMBED tag example outlined above.
You can use the combined OBJECT-EMBED-JavaScript tag to activate Java Plug-in in the right browser on the right platform. This combined tag is complicated and it should be used only if your HTML page is browsed by users in a heterogenous environment.

Summary

This document describes the OBJECT tag and EMBED tag styles used by Java Plug-in. It focuses on the conversion from anAPPLET tag to the OBJECT and EMBED tags. Currently, HTML 4.0 suggests that the OBJECT tag is the best way to insert Java applets and JavaBeans components into a HTML page. This document will be updated in the near future should there be a need to convert the OBJECT tag to the Java Plug-in tag style. Information disclosed in this document is intended to assist ISVs for writing HTML migration tools and to assist webmasters with Java Plug-in migration. The tag style described in this document is subject to change in the future.
Note that the use of Java Plug-in is not limited to the tag styles described in this document. In fact, webmasters are encouraged to modify the tag style or mix the tag with JavaScript to fit their needs. As long as the described OBJECTtag is used in IE and EMBED tag is used in Navigator, there should be no problems running Java Plug-in. Currently, there are several conversion templates shipped with the Java Plug-in HTML converter. Webmasters may find one template better than others for their needs, and are encouraged to modify these templates themselves if necessary.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息