gpt4 book ai didi

flash - 如果对象标签中没有 classid,YouTube 嵌入如何工作?

转载 作者:行者123 更新时间:2023-12-01 22:45:41 25 4
gpt4 key购买 nike

从 YouTube 嵌入功能获得的典型代码片段如下所示:

<object width="660" height="405">
<param name="movie" value="http://www.youtube.com/v/NWHfY_lvKIQ?fs=1&amp;hl=en_GB&amp;border=1"></param>
<param name="allowFullScreen" value="true"></param>
<param name="allowscriptaccess" value="always"></param>
<embed src="http://www.youtube.com/v/NWHfY_lvKIQ?fs=1&amp;hl=en_GB&amp;border=1"
type="application/x-shockwave-flash"
allowscriptaccess="always"
allowfullscreen="true"
width="660"
height="405">
</embed>
</object>

现在,<embed>元素有一个 type 属性来告诉浏览器它正在嵌入一个 flash 文件,但对于使用 <object> 的浏览器标签,浏览器似乎没有可用的信息!

为什么是 classid or codebase这里不需要属性?我能想到的唯一选择是:

  • 在没有其他信息的情况下,IE 假定嵌入 Flash
  • 或者,IE 从 <embed> 读取此信息标签

我找不到验证这两个选项的文档。我很好奇!

编辑:找到了 great comparison of Flash embedding techniques here 。但仍然想知道它是如何工作的......

最佳答案

我做了一些实验,发现删除 <embed>标签导致 IE 无法嵌入视频。我很惊讶 IE 使用了 embed 标签,因此深入研究。如果您只是想知道答案,请向下滚动最后的“摘要”!

在 IE8 中工作的最简单的事情是这样的:

<embed src="http://www.youtube.com/v/NWHfY_lvKIQ?fs=1&amp;hl=en_GB&amp;border=1"
width="660"
height="405">
</embed>

那里没有 type 属性,因此浏览器必须检查 src 属性的 MIME 类型以确定要做什么。我通过提供具有不同 MIME 类型的 Flash 文件来验证这一点 - 除非我提供 application/x-shockwave-flash 的类型属性,否则它不会播放(此行为已记录在 IE here 中)

当然,如果 <object>标签确实包含classid,<embed>将被忽略,这正是您所期望的。我通过让嵌入标签引用另一个视频来验证这一点

<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" WIDTH="660" HEIGHT="405" id="adobeWay">
<PARAM NAME=movie VALUE="http://www.youtube.com/v/NWHfY_lvKIQ?fs=1&amp;hl=en_GB&amp;border=1">
<PARAM NAME=quality VALUE=high>
<PARAM NAME=bgcolor VALUE=#FFFFFF>

<embed src="http://youtube.com/v/rIFh1ydXWmg"
type="application/x-shockwave-flash"
allowscriptaccess="always"
allowfullscreen="true"
width="660"
height="405">
</embed>

</OBJECT>

当使用对象标签时,Flash插件并不关心电影的MIME类型是什么。我再次通过提供具有不同 MIME 类型的有效 SWF 文件来验证这一点。

从上次测试中删除 classid,您将在 <embed> 中获得替代视频标签。 这让我想知道为什么会有 <param>如果标签只是在 YouTube 风格的嵌入中被忽略,则根本不需要标签。

摘要

当没有classid<object> 中的属性(或任何其他确定所需插件的方式,如数据属性),IE 渲染它可以在对象标记内找到的任何内容,这意味着它将渲染 <embed>标签(IE 称之为 object fallback )。如果该标签不包含 type属性,然后是 src 的 MIME 类型用于确定要使用的正确插件。

关于flash - 如果对象标签中没有 classid,YouTube 嵌入如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3546688/

25 4 0