首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Flash 嵌入技術演進:從傳統 Object/Embed 到 SWFObject 最佳實踐

     編輯:Java 相關知識

前言:Flash 嵌入的歷史包袱

早期嵌入 Flash 的標準做法是同時使用 <object> 和 <embed> 標籤,以兼容不同瀏覽器。但這導致參數重複、代碼冗餘,且 <embed> 不符合 W3C 標準,無法通過驗證。更糟的是,IE 在 SP2 後限制 ActiveX 交互,用戶必須點擊激活,嚴重影響體驗。

傳統嵌入方式的痛點

  • 代碼冗餘: object 和 embed 參數大量重複,修改參數需改兩處。
  • 不合標準: embed 非 W3C 標準,導致頁面驗證失敗。
  • IE 點擊激活: 微軟專利案導致 IE 要求用戶點擊才能與 Flash 交互。
  • 無版本檢測: 用戶 Flash Player 版本過低時無法友好提示,可能彈出恐怖的 ActiveX 安裝框。

JS 嵌入方案:SWFObject 闪亮登場

SWFObject 是一個成熟的 JavaScript 庫,優勢明顯:

  • 代碼簡潔,符合 W3C 標準。
  • 解決 IE 「點擊激活」問題。
  • 內建版本檢測與 Express Install(快速安裝)功能。
  • 支援多種參數傳遞方式(FlashVars, Params, Attributes)。
  • 2.x 版本極其輕量,調用簡單,無需等待頁面加載完成。

SWFObject 2.x 核心用法詳解

1. 最基礎的嵌入:一行代碼搞定

<div id="swfid"></div>
<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript">
swfobject.embedSWF("test.swf", "swfid", "300", "120", "9.0.0", "expressInstall.swf");
</script>

參數說明: SWF 路徑、容器 ID、寬、高、最低版本要求、Express Install SWF 路徑(可選)。同頁多處嵌入只需重複語句並更換容器 ID。

2. 進階用法:傳遞變量、參數與屬性

三種等效寫法,推薦 JSON 風格:

var flashvars = { name1: "hello", name2: "world", name3: "foobar" };
var params = { menu: "false" };
var attributes = { id: "dynamicContent2", name: "dynamicContent2" };
swfobject.embedSWF("test.swf", "content2", "300", "120", "6.0.0", "expressInstall.swf", flashvars, params, attributes);
  • flashvars:傳遞給 SWF 的變量(ActionScript 可通過 loaderInfo.parameters 獲取)。
  • params:Flash Player 參數(如 menu, wmode, allowScriptAccess 等)。
  • attributes:生成的 object 標籤屬性(如 id, name, styleclass 等)。

3. 極簡單行寫法

swfobject.embedSWF("test.swf", "content5", "300", "120", "6.0.0", "expressInstall.swf",
    {name1:"hello",name2:"world",name3:"foobar"},
    {menu:"false"},
    {id:"dynamicContent5",name:"dynamicContent5"});

資源鏈接

總結

放棄笨重的雙標籤嵌入,擁抱 SWFObject。它不僅解決了兼容性、標準性、用戶體驗等歷史難題,還提供了強大的版本檢測與參數管理能力,是嵌入 Flash 的現代最佳實踐。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved