在 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

【转】HTML - embed 与 object 之争相关推荐

  1. HTML - embed 与 object 之争

    2019独角兽企业重金招聘Python工程师标准>>> 在 HTML 里嵌入文本和图片之外的事物,就会用到嵌入标签,而嵌入标签在各浏览器之间的不统一,一直是让开发人员很头痛的问题.一 ...

  2. object标签与embad掉钱_object标签和embed标签

    概述 html中有许多用于嵌入各种类型内容的标签,包括:embed,audio,canvas,iframe,img,math,object,svg和video.之前我在很多地方都看到了object标签 ...

  3. C# COM Object for Use In JavaScript / HTML, Including Event Handling(转载)

    转自:C# COM Object for Use In JavaScript / HTML, Including Event Handling Introduction I wanted to be ...

  4. embed的名词_embed是什么意思_embed的翻译_音标_读音_用法_例句_爱词霸在线词典

    全部 把-嵌入 At the bottom of this structure we embed constants into operators which terminate the nestin ...

  5. object标签引入播放器

    我们在网页上看到的播放器无外乎WMP/RealOne/Macromedia Flash Player,其他的无非是面板不同,或添加了其他控件,对于计算机上安装的一些播放器也都是编码和解码器的整合,其最 ...

  6. How-to-quick-getting-started-for-Frontend

    一转眼已一年多不专注前端方面的开发工作,这一年前端方面的技术又是新天地,偶然接到内部团队邀请我给他们做一个前端的讲座,希望能帮助他们快速.且深刻了解前端这个行业以及行业内的知识,这可真有点让我为难,由 ...

  7. html页面视频标签,html5基础标签(html5视频标签 html5新标签用法)

    点评:html5基础,包括html5视频标签和html5新标签等标签用法,大家参考使用吧 1.  声明的变化 2.  指定字符编码的变化,html5中建议使用utf-8 3.  Html5中允许 没有 ...

  8. 媒体查询漫谈——@media Queries

    通过不同的媒体类型和条件定义样式表规则.媒体查询让CSS可以更精确作用于不同的媒体类型和同一媒体的不同条件.媒体查询的大部分媒体特性都接受min和max用于表达"大于或等于"和&q ...

  9. Javascript及Jquery获取元素节点以及添加和删除操作

    用了javascript和jquery很久,把所有元素节点的操作总结了下,放在博客上作为记录. Javascript获取元素的主要方式有三种 1.document.getElementById('ma ...

最新文章

  1. 年轻的LeCun、吴恩达长啥样?升级版StyleGAN告诉你
  2. 【Silverlight】Bing Maps学习系列(七):使用Bing Maps的图片系统(Tile System)
  3. 基于bootstrap实现简单用户管理功能
  4. ASP.NET MVC 3 RC发布
  5. python 重写抽象类编译错误_从零开始的Java之旅5.0继承、super、this、抽象类
  6. 搭配和谐的色彩的秘密
  7. django debug=false后静态文件丢失_Django DEBUG=False后DEBUG=True带来的问题
  8. AP类WiFi模块系列二:半成品主板式大功率AP类WiFi模块
  9. 3DTools TrackballDecorator实现3D漫游
  10. 云操作系统,是真的吗?(译文)
  11. 使用SharedPreferences保存list
  12. 你能用研发局域网服务器做什么
  13. 【高等数学笔记】曲面积分的计算
  14. R 语言assign 和get 函数用法
  15. 转:(记录)C语言中的itoa()函数的用法解析
  16. windows使用ssh连接远程服务器
  17. 3、需求调研 - 产品管理系列文章
  18. pip 升级到最近21.0.1 后报错 sys.stderr.write(f“ERROR: {exc}“)
  19. linux申请端口,linux申请端口申请书
  20. 租车战场没有新故事,一嗨租车能否破局?

热门文章

  1. centos卸载内核_CentOS 中内核模块的加载和卸载
  2. tensorflow:Multiple GPUs
  3. 论文《learning to link with wikipedia》
  4. Spring Cloud Gateway(五):路由定位器 RouteLocator
  5. 三元表达式 列表递推 生成器表达式
  6. 【公共类库】加密解密
  7. push模式的水晶报表,参数的设置要放在数据源设置之后
  8. JavaScript 数组处理方法总结
  9. Vue — 第三天(计算属性和json-server)
  10. javaScrip第五天(1)