发布时间:2011-4-8 15:29
分类名称:Plugins
<object data="newave.avi" type="video/avi"
width="320" height="200"
autostart="true" loop="true">
</object>
<embed src="audiplay.aiff" type="audio/x-aiff" hidden="true">
embed 标签中,有一个属性是hidden,可以控制页面是否显示插件界面(如果有的话)。而object没有,但object可以使用css渲染来实现:
object {
visibility: visible;
}
object.hiddenObject {
visibility: hidden !important;
width: 0px !important;
height: 0px !important;
margin: 0px !important;
padding: 0px !important;
border-style: none !important;
border-width: 0px !important;
max-width: 0px !important;
max-height: 0px !important;
}
<object data="audiplay.aiff" type="audio/x-aiff" class="hiddenObject"></object>
object标签还可以实现嵌套,用来对不同浏览器同时支持,使用很灵活。
<html>
<head>
<title>Example 1: Nesting object Elements</title>
<style type="text/css">
.myPlugin {
width: 470px;
height: 231px;
}
</style>
</head>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,30,0" class="myPlugin">
<param name="movie" value="foo.swf"/>
<param name="quality" value="high"/>
<param name="salign" value="tl"/>
<param name="menu" value="0"/>
<object data="foo_movie.swf"
type="application/x-shockwave-flash"
class="myPlugin">
<param name="quality" value="high"/>
<param name="salign" value="tl"/>
<param name="menu" value="0"/>
<object type="*" class="myPlugin">
<param name="pluginspage" value="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"/>
</object>
</object>
</object>
</html>
按照官方介绍,object递归搜索规则为:
1. 寻找MIME type,如果有对应的plugin,则浏览器加载使用它。
2. 如果没有,则Gecko调用默认的plugin,此plugin的作用是用来搜索和安装能够处理此MIME type的plugin。
3. 如果没能找到,那么将进入下面一层object。然后重复1-3.
但我使用最新的Firefox4来测试的时候,发现这个处理过程并不正常。它会递归寻找所有的object,只要有一个type不配套,就会出现搜索插件对话框。所以应该代码:
<object type="*" class="myPlugin">
<param name="pluginspage" value="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"/>
去除掉。