本章节将假设您已了解以下内容：
  alternative content
Editors:
  龙藏,Taobao,Inc

### 注意

一般来说，仅仅插入SWF不需要任何 JS代码。

当一个页面需要借助JS插入SWF,通常出于以下1个或多个情况:

- 消除某些浏览器存在的“点击激活(click-to-activate)”机制 。
- 当前页面和SWF间通讯。
- Flash player 版本向导及客户端版本控制。
- 动态增删改SWF及其涉及的元素属性及内容。

使用动态方式插入 SWF 时，代码会自行判断浏览器并以最恰当的方式进行插入。

代码差异性：指设定同样内容时，需要通过2种方式共同指定。

### O-E静态方式

#### 关于:

1. 由 OBEJCT 和 EMBED 两个标签组合而成
2. Adobe Flash Pro 等官方工具产出的页面中 NOSCRIPT 标签间包含的内容
3. 通常附带名为 AC_RunActiveContent 的 javascript 文件

#### 优点:

1. 最强兼容性
2. 遵从“优雅降级”(Gracefuldegradation)方式
3. 官方代码,具有官方技术人员负责维护核心部分代码。如 AC_RunActiveContent.js

#### 缺点:

1. 最具差异性代码，不便于统一维护。
2. 无法自定义替换内容Alternative content。即不满足可用性(usable)。
3. 官方代码,具有官方技术人员负责维护核心部分代码。如 AC_RunActiveContent.js
4. 代码冗余

#### 其他:

1. 默认官方代码主要依靠JS动态加载。可能会受限于页面控制权限。如第三方平台不允许用户使用。
2. 仅静态嵌入,需要用户从自动生成代码的 NOSCRIPT 标签中剥离。
3. AC_RunActiveContent是document.write()方式写入object或embed标签。

#### 适用:

1. 自己的站点，或不需要考虑太多问题的地方。因为官方都已做好，傻瓜式。
2. 需要最强兼容但不需要自定义替换内容Alternative content的应用。

#### 示例代码:

    <script language="javascript">AC_FL_RunContent = 0;</script>
    <script src="AC_RunActiveContent.js" language="javascript"></script>
    <script language="javascript">
    if (AC_FL_RunContent == 0) {
    	alert("此页需要 AC_RunActiveContent.js");
    } else {
    	AC_FL_RunContent(
    		'codebase', '/swflash.cab#version=9,0,0,0',
    		'width', '950',
    		'height', '203',
    		'src', 'SWF.swf',
    		'quality', 'high',
    		'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
    		'align', 'middle',
    		'play', 'true',
    		'loop', 'true',
    		'scale', 'showall',
    		'wmode', 'window',
    		'devicefont', 'false',
    		'id', 'movie',
    		'bgcolor', '#ffffff',
    		'name', 'movie',
    		'menu', 'true',
    		'allowFullScreen', 'false',
    		'allowScriptAccess','sameDomain',
    		'movie', 'SWF.swf',
    		'salign', ''
    		); //end AC code
    }
    </script>
    <noscript>

    <object
    	classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
    	codebase="/swflash.cab#version=6,0,0,0"
    	width="950"
    	height="203"
    	id="movie"
    >

    	<param name="movie" value="SWF.swf" />
    	<param name="allowfullscreen" value="true" />
    	<param name="allowscriptaccess" value="always" />
    	<param name="allownetworking" value="all" />
    	<param name="wmode" value="transparent" />

        <embed src="SWF.swf"
    			width="950"
    			height="203"
    			allowfullscreen="true"
    			allowscriptaccess="always"
    			allownetworking="all"
    			wmode="transparent"
    			name="movie"
    			type="application/x-shockwave-flash"
    			pluginspage="http://www.macromedia.com/go/getflashplayer"
    	/>

    </object>
    </noscript>

### O-O静态方式

#### 关于:

1. 由 2 个OBEJCT 标签组合而成
2. SWObject 作者推荐的静态潜入方式
3. 通常附带名为 AC_RunActiveContent 的 javascript 文件

#### 优点:

1. PC主流浏览器兼容。
2. 较少代码差异性，利于维护。
3. 可以自定义替换内容Alternative content。

#### 缺点:

1. 在某些浏览器下会多一次自定义替换内容Alternative content的请求。
2. 在某些浏览器下多一次 SWF 请求，且不会从缓存取该内容。
3. IE条件注释标签作可能在非IE浏览器下存在潜在问题
4. 代码部分冗余

#### 其他:

1. 有在线生成器。
2. SWFOject生成动态代码都是替换指定的 HTML 元素为一个 OBJECT 元素。

#### 适用:

1. 所有PC上。
2. 当用户播放器可能没有安装或版本过低时，期望出现可替换内容的Alternative content。
3. 可能需要通过期望出现可替换内容的 Alternative content 面向SEO的。

#### 示例代码:

    <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="950"
    height="203" id="myFlashContent">

    	<param name="movie" value="SWF.swf" />
    	<param name="allowfullscreen" value="true" />
    	<param name="allowscriptaccess" value="always" />
    	<param name="allownetworking" value="all" />
    	<param name="wmode" value="transparent" />
    	<!--[if !IE]>-->
    	<object type="application/x-shockwave-flash" data="SWF.swf"
    	width="950" height="203">
    		<param name="allowfullscreen" value="true" />

    		<param name="allowscriptaccess" value="always" />
    		<param name="allownetworking" value="all" />
    		<param name="scale" value="exactfit" />
    		<param name="wmode" value="transparent" />
    	<!--<![endif]-->
    	<a href="http://www.adobe.com/go/getflashplayer">
    		<img src="get_flash_player.gif" alt="Get Adobe Flash player" />
    	</a>
    	<!--[if !IE]>-->
    	</object>
    	<!--<![endif]-->
    </object>

### L-O静态方式

#### 关于:

1. L-O即 Lazy Object。
2. 仅有一个 OBJECT 标签。
3. 是O-O方式的偷懒写法。

#### 优点:

1. PC上所有主流浏览器兼容。
2. 代码差异性很小。
3. 代码量较少。
4. 可以自定义替换内容Alternative content。

#### 缺点:

1. 由于是O-O方式的偷懒法，故拥有O-O方式全部缺点。
2. 在部分浏览器下，SWF将不能被缓存。

#### 适用:

1. 对页面请求数要求不高的页面。
2. 想偷懒又想能自定义替换内容Alternative content的页面。

#### 示例代码:

    <object  type="application/x-shockwave-flash"  data="SWF.swf"
    width="950" height="203" id="myFlashContent">
    	<param name="movie" value="SWF.swf" />
    	<param name="allowfullscreen" value="true" />
    	<param name="allowscriptaccess" value="always" />
    	<param name="allownetworking" value="all" />
    	<param name="wmode" value="transparent" />
    	<a href="http://www.adobe.com/go/getflashplayer">
    		<img src="get_flash_player.gif" alt="Get Adobe Flash player" />
    	</a>
    </object>

### L-E静态方式

#### 关于:

1. L-E即 Lazy Embed
2. 仅有一个 EMBED 标签。

#### 优点:

1. 兼容当前所有主流浏览器。
2. 代码量最少。
3. 代码无差异性。
4. 无多余请求。

#### 缺点:

1. 无法自定义替换内容Alternative content。
2. 非XHTML1.0规范(HTML5才正式纳入规范)。
3. 可能某些版本浏览器解析有问题。

#### 适用:

1. 希望使用最少代码的页面
2. 不需要自定义替换内容Alternative content的页面

#### 示例代码:

    <embed src="SWF.swf"  width="950" height="203"
    		allowfullscreen="true"
    		allowscriptaccess="always"
    		allownetworking="all"
    		wmode="transparent"
    		name="movie"
    		pluginspage="http://www.macromedia.com/go/getflashplayer"
    />

更多意见和建议？

home › flash › start › embed-swf-onto-webpage: