在多种浏览器中嵌入Applet

2024-08-31 19:58
文章标签 多种 浏览器 嵌入 applet

本文主要是介绍在多种浏览器中嵌入Applet,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 基本信息

摘要:一个开发好的Java Applet,是通过标准的标签(Tag)嵌入到HTML页面中的。浏览器在解析到支持的嵌入Applet的标签时,会启动Java Plug-in来渲染标签中的Java Applet。

由于历史原因,在页面中嵌入Applet产生了几种相互不兼容的方式,不同的浏览器、乃至同一个浏览器的不同版本,支持的标签都不完全相同。本文关注的是 不同浏览器Applet嵌入的差异性,首先介绍几种把Applet嵌入到页面中的标签,再介绍几个能够支持多种浏览器的嵌入方式。

作者:丁向武

2 页面中嵌入Applet的几种方式

2.1 Applet Tag

  Applet标签是最早IE用来支持嵌入Java Applet的标签,那个时候微软还有自己的JAVA虚拟机。在有些版本的浏览器上,Applet标签是由浏览器自己渲染的,而不是由SUN Java Plug-in渲染的。这个标签出现的比较早,现在有些浏览器仍然能够兼容它,比如IE、Firefox等,但Netscape不支持这个标签。现在的 W3C规范里,这个标签已经不推荐使用,而是被Object标签代替了。这个标签最大的问题是,在客户端没有安装Java Plug-in时,不能指定一个自动下载安装Java Plug-in的地址。

下面是这个标签的一个例子:

  1. <APPLET code="XYZApp.class" codebase="html/" archive="Sample.jar"

  2. align="baseline" width="200" height="200">

  3. <PARAM name="model" value="models/HyaluronicAcid.xyz">

  4. No Java 2 SDK, Standard Edition v 1.4.2 support for APPLET!!

  5. </APPLET>

 

2.2 Embed Tag

  这是Netscape Navigator 4.x浏览器支持的嵌入Applet的标签,其他浏览器很少支持这个标签的,因此实际应用的很少。这个标签不支持以内嵌Param标签的方式为 Applet传递参数。

下面是这个标签的例子:

  1. <EMBED type="application/x-java-applet;jpi-version=1.4.1" width="200"

  2. height="200" align="baseline" code="XYZApp.class"

  3. codebase="html/" model="models/HyaluronicAcid.xyz"

  4. pluginspage="http://java.sun.com/j2se/1.4.1/download.html">

  5. <NOEMBED>

  6. No Java 2 SDK, Standard Edition v 1.4.1 support for APPLET!!

  7. </NOEMBED>

  8. </EMBED>

 

2.3 Object:clsid Tag

  这是现在IE浏览器中推荐的用来嵌入Applet的标签,如下面的例子所示。

  这个标签中的URI以“clsid”开始,只有IE浏览器支持这个属性,其他浏览器都不支持。URI以“clsid”开始,表明这是一个 ActiveX控件,只有Windows中的IE才识别的属性,代表注册表中一个注册的ActiveX类,“CAFEEFAC- 0014-0002-0000-ABCDEFFEDCBA”是SUN JRE安装时在Windows中注册的,代表SUN Java Plug-in 1.4.2。因此当IE解析到示例中的标签时,会通过注册表,查找到Java Plug-in,然后启动JRE,在当前位置渲染这个Applet。另外一个clsid值:“8AD9C840-044E-11D1- B3E9-00805F499D93”,代表当前最新的JRE版本。

  “codebase”属性指定了一个特定版本JRE的下载地址,当客户端机器上没有安装Java Plug-in时,会自动从这个地址下载安装Java Plug-in。

  “scriptable”属性用于指定Applet示例是否能与页面中的JavaScript交互。

  这个标签功能比较丰富,可以通过Param标签为Applet传递参数、设置需要的JDK版本、指定自动下载JRE的路径等。在IE中嵌入 Applet时,都要使用这个标签。

下面是这个标签的示例:

  1. <OBJECT classid="clsid:CAFEEFAC-0014-0002-0000-ABCDEFFEDCBA"

  2. width="200" height="200" align="baseline"

  3. codebase= http://java.sun.com/products/plugin/autodl/jinstall-1_4_2-windows-i 586.cab#Version=1,4,2,0">

  4. <PARAM name="code" value="XYZApp.class">

  5. <PARAM name="codebase" value="html/">

  6. <PARAM name="type" value="application/x-java-applet;jpi-version=1.4.2">

  7. <PARAM name="model" value="models/HyaluronicAcid.xyz">

  8. <PARAM name="scriptable" value="true">

  9. No Java 2 SDK, Standard Edition v 1.4.2 support for APPLET!!

  10. </OBJECT>

2.4 Object:java Tag

  这是当前的W3C规范推荐的在浏览器中嵌入Applet的方式,除IE外的大多数浏览器的当前版本都能够支持,包括Netscape Navigator、Firefox等,并且不受操作系统平台的限制。URI以“java”开始,表明这里嵌入的是一个Java Applet,浏览器会启动Java Plug-in来渲染这个Applet对象。如果客户端没有安装Java Plug-in,浏览器会自动到Sun的站点上下载和安装最新的Java Plug-in。

下面是这个标签的示例:

  1. <OBJECT classid="java:Sample2.class"

  2. type="application/x-java-applet"

  3. archive="Sample2.jar"

  4. height="300" width="450" >

  5. <PARAM name="model" value="models/HyaluronicAcid.xyz">

  6. </ OBJECT>

3 同时支持多种浏览器的嵌入方式

  通过上面的介绍可以看到,已有的几种在页面中嵌入Applet的方式,都只能适应特定的浏览器。对于几种常用的浏览器,如IE、 Netscape Navigator、Firefox等,没有一种方式能够同时适应。必须要做一项特殊处理,才能使同一段HTML代码能够适应多种浏览器。下面介绍几种方法。

3.1 组合Object:clsid、 Embed

  如下面的示例所示,把Embed标签用Comment标签包含起来,放在Object标签内部。IE在解释Object标签时,会忽略 Comment标签内的内容。而Netscape Navigator不能识别clsid、不能识别Comment标签,它会忽略忽略外层的Object标签和Comment标签,而只看到Embed标签的内容。这样,这段代码可以同时适应IE和Netscape Navigator两种浏览器。

示例:

  1. <OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"

  2. width="200" height="200" align="baseline"

  3. codebase="http://java.sun.com/products/plugin/1.4/jinstall-14-win32.cab#Version=1,4,0,mn">

  4. <PARAM NAME="code" VALUE="XYZApp.class">

  5. <PARAM NAME="codebase" VALUE="html/">

  6. <PARAM NAME="type" VALUE="application/x-java-applet;jpi-version=1.4">

  7. <PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz">

  8. <PARAM NAME="scriptable" VALUE="true">

  9. <COMMENT>

  10. <EMBED type="application/x-java-applet;jpi-version=1.4" width="200"

  11. height="200" align="baseline" code="XYZApp.class"

  12. codebase="html/" model="models/HyaluronicAcid.xyz"

  13. pluginspage="http://java.sun.com/j2se/1.4/download.html">

  14. <NOEMBED>

  15. No Java 2 SDK, Standard Edition v 1.4 support for APPLET!!

  16. </NOEMBED>

  17. </EMBED>

  18. </COMMENT>

  19. </OBJECT>

3.2 利用IE的条件注释

IE识别如下样式的条件注释(Conditional Comments):

 <!--[if !IE]>

  非IE 浏览器时的代码

 <![endif]-->

  这个条件注释只有IE识别,其他浏览器会把这两行作为普通的HTML注释忽略。因此,可以用下面的形式来适应所有的浏览器:

  1. <!--[if !IE]> Firefox and others will use outer object -->

  2. <object classid="java:Sample2.class"

  3. type="application/x-java-applet"

  4. archive="Sample2.jar"

  5. height="300" width="450" >

  6. <!--<![endif]-->

  7. <!-- MSIE (Microsoft Internet Explorer) will use inner object -->

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

  9. codebase="http://java.sun.com/update/1.5.0/jinstall-1_5_0-windows-i586.cab"

  10. height="300" width="450" >

  11. <param name="code" value="Sample2" />

  12. <param name="archive" value="Sample2.jar" />

  13. <strong>

  14. This browser does not have a Java Plug-in.

  15. <br />

  16. <a href="http://java.sun.com/products/plugin/downloads/index.html">

  17. Get the latest Java Plug-in here.

  18. </a>

  19. </strong>

  20. </object>

  21. <!--[if !IE]> close outer object -->

  22. </object>

  23. <!--<![endif]-->

  对于IE浏览器,它会忽略条件注释之间的代码,因此只会看到<object classid="clsid:..这个标签内的内容。对于非IE的其他浏览器,会忽略HTML注释,并且不会解释clsid这个属性,因此也会忽略& lt;object classid="clsid:..>…</object>之间的内容,也就是只会看到<object classid="java:…的内容。

  这种方法可以适应所有的浏览器。

3.3 利用JavaScript

  各种主流浏览器的当前版本都能够支持JavaScript,因此我们可以用JavaScript来判断浏览器的版本,然后输出合适的HTML代码。这种方式能支持大多数主流的浏览器,如IE、Netscape Navigator、Firefox等。

示例如下:

  1. <script language="Javascript">

  2. var _app = navigator.appName;

  3. if (_app == 'Netscape') {

  4. document.write('<embed code="Applet1.class"',

  5. 'width="200"',

  6. 'height="200"', 'type="application/x-java-applet;version=1.5.0">');

  7. }

  8. else if (_app == 'Microsoft Internet Explorer') {

  9. document.write('<OBJECT ',

  10. 'classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"',

  11. 'width="200"',

  12. 'height="200">',

  13. '<PARAM name="code" value="Applet1.class">',

  14. '</OBJECT>');

  15. }

  16. else {

  17. document.write('<p>Sorry, unsupported browser.</p>');

  18. }

  19. </script>

这篇关于在多种浏览器中嵌入Applet的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1124855

相关文章

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

zeroclipboard 粘贴板的应用示例, 兼容 Chrome、IE等多浏览器

zeroclipboard单个复制按钮和多个复制按钮的实现方法 最近网站改版想让复制代码功能在多个浏览器上都可以实现,最近看网上不少说我们的代码复制功能不好用的,我们最近将会增加代码高亮等功能,希望大家多多支持我们 zeroclipboard是一个跨浏览器的库类 它利用 Flash 进行复制,所以只要浏览器装有 Flash 就可以运行,而且比 IE 的

微软正式推出 Spartan 斯巴达浏览器

作为用于替代 IE 浏览器的下一代继任者,微软的 Project Spartan 斯巴达浏览器可算是吊足了玩家们的胃口!如今,在最新的 Windows 10 Build 10049 版本起,它终于正式登场了。 斯巴达浏览器搭载了全新的渲染引擎、新的用户界面并集成了 Cortana 语音助手。功能上新增了稍后阅读列表、阅读视图、F12开发者工具、支持网页注释 (手写涂鸦),可以保存到 O

PC与android平板通过浏览器监控Verybot的视频

下面这个视频是PC与android平板通过浏览器监控Verybot的视频:           http://v.youku.com/v_show/id_XNjYzNzYyMTIw.html

搜狗浏览器打开CSDN博客排版错乱问题解决

之前发生过几次,不知道什么原因。 今天一直用着好好的,打开一个csdn连接,显示404,博文被删除了,于是就用百度快照打开试试,百度快照打开显示的排版很乱也没找到有用信息。 后面再浏览CSDN博客就排版错乱,显示一个大大二维码图片。 尝试删除IE缓存无效,使用谷歌浏览是好的。 基本锁定就是搜狗缓存导致的,于是找如何删除搜狗缓存   清除后恢复正常

240907-Gradio插入Mermaid流程图并自适应浏览器高度

A. 最终效果 B. 示例代码 import gradio as grmermaid_code = """<iframe srcdoc='<!DOCTYPE html><html><head><meta charset="utf-8" /><meta name="viewport" content="width=device-width" /><title>My static Spa

Jasperreports+jaspersoft studio 实现单个或多个jrxml(jasper)文件生成一个pdf文件,并利用Servlet发送该pdf文件到浏览器中展示

Jasperreports+jaspersoft studio 实现单个或多个jrxml(jasper)文件生成一个pdf文件,并利用Servlet发送该pdf文件到浏览器中展示; 代码如下: Demo07.jrxml <?xml version="1.0" encoding="UTF-8"?><!-- Created with Jaspersoft Studio version 6.6.

vite是如何实现依赖预构建的,浏览器为什么没有实现从node_modules查找依赖,vite开发环境解决了什么问题

浏览器的esmodule 为什么没有做从node_modules查找依赖项 浏览器是基于http请求的,node_modules中依赖项不可控,可能又会依赖很多的包,整个依赖图都需要加载的话很耗性能。 commonjs是运行在服务端的,以file形式读取文件,内部有规避机制。 依赖预构建 首先vite会找到对应的依赖,然后调用esbuild(对js语法进行处理的一个库),将其他规范的代码转换

Java开发实例大全提高篇——Applet的应用

开发十年,就只剩下这套架构体系了! >>>    第21章  Applet的应用 21.1  Applet在html中的使用 实例549  在html中显示Applet HtmlShowApplet.java     public void paint(Graphics g){         g.drawString("html文件已经运行", 50, 50);// 绘制文本

浏览器工作原理(3)-TCP协议文件如何从服务器到浏览器

浏览器工作原理-TCP协议,文件如何从服务器到浏览器 本周继续学习浏览器工作原理及实践,本次内容来看一下TCP协议确保文件完整的送到至浏览器 First Page 是指页面加载到首次开始绘制的时长,而影响这个性能指标的一个重要原因是网络加载速度,网络传输协议无论使用http还是websocket,都是基于TCP/IP的,所以有必要了解一下TCP/IP,对于web的性能调优和问题定位都有很