Using html to dispaly plugins

发布时间:2011-4-8 15:29
分类名称:Plugins


HTML中使用object或者embed标签来插入的Pluginsimplemented by NPAPI)。Firefox对这俩种标签都支持。
Using html to dispaly plugins - Dsliu - Dspace

 

Simple Codes

<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>

Nested Object Elements

object标签还可以实现嵌套,用来对不同浏览器同时支持,使用很灵活。

<html>

<head>

<title>Example 1: Nesting object Elements</title>

<style type="text/css">

  .myPlugin {

     width:  470px;

     height: 231px;

  }

</style>

</head>

<body><p>

<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>

</p></body>

</html>

按照官方介绍,object递归搜索规则为:

1. 寻找MIME type,如果有对应的plugin,则浏览器加载使用它。
2.
如果没有,则Gecko调用默认的plugin,此plugin的作用是用来搜索和安装能够处理此MIME typeplugin
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"/>

去除掉。