【转】HTML - embed 与 object 之争

在 HTML 里嵌入文本和图片之外的事物,就会用到嵌入标签,而嵌入标签在各浏览器之间的不统一,一直是让开发人员很头痛的问题。一切都要从嵌入 SUN 公司的 Applet Java 小程序开始。

   当时,对于 Applet 的嵌入,浏览器老大哥 Netscape 公司是使用 embed 标签的,embed 标签的好处就是嵌入一个对象只需要一对标签,所有参数都写入该标签的属性,非常方便。而微软和其他浏览器厂商都使用 applet 专用标签,主标签只有几个固定的属性,那些和嵌入内容有关的属性都放在子标签 param 里(param 只有 name、value 这类固定属性),这种组合标签,就是 object 标签的前身。

  之后,随着 Flash、视频、音频这些多媒体元素在网站上的出现,embed 标签的功能被扩展了,用于嵌入这些多媒体元素——原先 embed 标签就有一个 type 属性,利用 MIME 分辨嵌入内容的类型——这是一个非常好的功能,使得非 Applet 的内容也能被识别,而且 MIME 的法则本身就不受浏览器和操作系统的限制。

  此时的微软,正在 ActiveX 技术普及的时期,applet 这种标签名范围太窄,于是就大力推行泛用的 object 标签,专门用于 ActiveX 控件的嵌入。object 标签几乎和 applet 一样,只是多了 clsid、codetype 等属性,主要用来来判别嵌入内容的类型。ActiveX 是一把双刃剑,虽然极易开发和使用,但是却是 Windows Only 的技术;而且连 Firefox 的 Windows 版都不支持它,所以在浏览器行业 ActiveX 简直是 IE Only…… 于是各大浏览器厂商都倒向以往被冷落的 embed,只是……被 W3C 认可的是 object,而不是 embed,因为 embed 的属性是根据嵌入内容类型的不同而不同的(实质上是针对“嵌入内容解读插件”而写的属性),无法定死,对于标准来说这就是硬伤。

  下 面,我针对 embed 与 object 标签在 IE6 和 FF3 for Windows 之间做了对比测试。方法是,嵌入了一个 Flash(swf 文件,MIME 为 application/x-shockwave-flash)和一个音频(mp3 文件,MIME 为 audio/mpeg),分别写成四种形式的 HTML 给两个浏览器浏览:
  1,两个嵌入都使用 embed;
  2,两个嵌入都使用 object(只靠 clsid 识别);
  3,两个嵌入都使用 object(同时使用 clsid 与 codetype 识别);
  4,两个嵌入都使用 object(只靠 codetype 识别)。
  IE6 的结果为:
  1——两个嵌入都正常(mp3 默认是 WMP 的 ActiveX 控件打开;若 QuickTime ActiveX 控件注册了mp3 的 MIME,则由 QuickTime ActiveX 控件打开,且可能有安全警告);
  2——两个嵌入都正常(clsid 填写哪个 ActiveX 控件的,就用哪个打开);
  3——两个嵌入都正常(clsid 填写哪个 ActiveX 控件的,就用哪个打开);
  4——Flash 嵌入正常,mp3 音频嵌入失败(显示成一个无法输入的文本框)。
  FF3 的结果为:
  1——两个嵌入都正常(mp3 默认无法打开,除非 type 属性改用 WMP 专用 MIME;若 QuickTime 插件注册了mp3 的 MIME,则由 QuickTime 插件打开);
  2——两个嵌入都失败(空白);
  3——两个嵌入都失败(空白);
  4——两个嵌入都失败(空白)。

  测试结果是:embed 标签兼容性较强,但是变数太多,对于小白浏览者来说就是噩梦;而 object 标签果然是 IE Only。所以当年被 Macromedia 公司所提倡的 object-embed 混合写法是最安全的,虽然不符合 W3C 标准。

   另针对 Windows Media Player ActiveX 控件。在 IE(包括马甲)第一次在网页上读到含有媒体装载的 embed 或 object 元素时,会给 IE 注册相应的加载项,虽然注册的名称不同,但是文件都指向 wmp.dll 或 wmpdxm.dll。含有有效 clsid 的 object 元素将注册名称为 Windows Media Player 的加载项;embed 元素则会根据文件 MIME 注册成对应名称的加载项(比如 wma 文件会注册 AUDIO__X_MS_WMA Moniker Class,wmv 文件会注册 VIDEO__X_MS_WMV Moniker Class,实际上这些 class 是原本就存在的,只是需要创建 MIME - CLSID 关联并链入 iexplore)。当禁用已经生成的加载项,或者加载项注册表被破坏时,其对应的 HTML 标签将失去作用。

from:http://my.oschina.net/u/941420/blog/227545

时间: 2024-11-19 10:51:39

【转】HTML - embed 与 object 之争的相关文章

html5新媒体播放器标签video、audio 与embed、object

html5里的一些新的标签,看到里面object.embed.video.audio都可以添加视频或音频文件 embed是针对非IE的浏览器的媒体播放器 video是html5出的一种新标准,但并不是所有的浏览器都支持.video虽然号称可以支持三种媒体类型,但常用的只有mp4. 像object,和embed是都可以用来播放视频和音频,而且他们展示效果基本上一样的, 1. video.audio可以看我的另一篇文章https://www.cnblogs.com/jing-tian/p/10930

<frame>、<iframe>、<embed>、<object> 和 <applet>

frame frame 必须在 frameset 里,而 frameset 又不能和 body 共存(就是一旦存在 frame,就不能存在 body 了,因此这个基本每人使用) 推荐阅读:https://www.w3school.com.cn/tags/tag_frame.asp <html> <frameset cols="25%,50%,25%"> <frame src="frame_a.htm" /> <frame s

[HTML/CSS]div显示在object、embed之上~

引言 帮一个朋友弄前端布局,一切都正常,但是嵌入object之后,div总是在object的下面,就上网找了一下解决方案,这里记录一下,好像只对flash有效. 用embed插入一个flash(比如优酷的视频),结果总是能把其它元素盖住.把其它元素的z-index改成巨大都没用.现有的解决方案是在插入flash的embed或object标签中加入”wmode”属性并设置为wmode=“transparent”或”opaque”,但wmode属性到底是什么意义,为什么可以解决这个问题呢?windo

object标签和embed标签

概述 html中有许多用于嵌入各种类型内容的标签,包括:embed,audio,canvas,iframe,img,math,object,svg和video.之前我在很多地方都看到了object标签和embed标签,现在做一个总结供以后开发时参考,相信对其他人也有用. 参考资料: html中object和embed标签的区别 http://www.360doc.com/content/16/0603/11/27834384_564696725.shtml object和embed标签 obje

&lt;object&gt;标签引入播放器

我们在网页上看到的播放器无外乎WMP/RealOne/Macromedia Flash Player,其他的无非是面板不同,或添加了其他控件,对于计算机上安装的一些播放器也都是编码和解码器的整合,其最核心的编码和解码技术是相同的.例如:网络上最流行的windows media流(asf,wma,wmv格式...),Real流(rm,rmvb...),更有MPEG系列编码格式(MP4/MP3格式...) 视窗系统 Media Video 是微软推出的一种流媒体格式,他是在“同门”的ASF(Adva

object 插入元素,插入HTML页面

object标签用于定义一个嵌入的对象,包括:图像.音频.Java applets.ActiveX.PDF以及Flash.该标签允许您规定插入HTML文档中的对象的数据和参数,以及可用来显示和操作数据的代码. 常用的功能: 一.显示图片: [color=Red]<object height="100%" width="100%" type="image/jpeg" data="audi.jpeg"> </ob

SVG入门

一. 什么是SVG?SVG(Scalable Vector Graphics)可伸缩矢量图形,它是用XML格式来定义用于网络的基于矢量的图形,而它的特点就是 图像在放大或改变尺寸的情况下其图形质量不会有所损失,同时他和DOM一样都是W3C的一个标准.这里解释下位图和矢量图:位图,也就是我们经常能看到的图片,他是一个平面上密集排布的店的集合,也就是说它是由一个个点构成的.而如果对他进行放大那么相对应的点就会进行放大,这样就会让图片显得十分不清晰粗糙.矢量图,也称为面向对象的图像或绘图图像,在数学上

HTML 事件

1.HTML 全局事件属性 HTML4 的新特性之一就是可以使 HTML 事件触发浏览器中的行为,比方说当用户点击某个 HTML 元素时启动一段 JavaScript,在 HTML5 中还增加了一些新的事件属性. HTML 事件就是发生在 HTML 元素上的事情.当在 HTML 页面中使用 JavaScript 时, JavaScript 就可以触发这些事件.HTML 事件可以是浏览器行为,也可以是用户行为.浏览器行为比如:页面加载时触发事件,页面关闭时触发事件等等.用户行为比如:点击按钮触发事

响应式web设计与CSS3媒体查询

在之前一篇译文中,我们了解了响应式Web设计的概念.组成要素以及基本的实现思路.今天继续相关话题,我们将从前文介绍过的"弹性布局结构"这方面出发,通过一个具体的实例来深入学习. 如今的屏幕分辨率,小至320px(iPhone),大到2560px甚至更高(大显示器),变化范围极大.除了使用传统的台式机,用户会越来越多的通过手机.上网本.iPad一类的平板设备来浏览页面.这种情况下,固定宽度的设计方案将会显得越发不合理.页面需要有更好的适应性,其布局结构要做到根据不同的设备及屏幕分辨率进行