各瀏覽器嵌入對象區別

通常情況下,IE 系列瀏覽器通過 ActiveX 插件使用 OBJECT 元素引入 Flash,而其他瀏覽器則是通過相應的 NPAPI 插件使用 EMBED 元素。這造成了各瀏覽器中插入 Flash 的方式的差異。

若僅僅使用 OBJECT 元素設置了 classid 屬性引入 Flash,則可能造成在某些瀏覽器中 Flash 無法被引入。而若嵌套的 OBJECT 和 EMBED 元素參數不統一,也可能造成引入的 Flash 在各瀏覽器中出現差異。

原因:

對於 HTML4.01 規範中的 OBJECT 元素,IE 對 classid 屬性有自己的解釋方式:類標識符(class identifier)。格式形如:clsid:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX。由 ActiveX 組件註冊在 Windows 的系統註冊表中。
codebase 屬性則爲該類標識符所對應的 ActiveX 插件的 URI 地址。一般是一個 .cab 安裝包。(更多請參考 MSDN:
CLASSID Attribute | classid PropertyClass Identifier中的內容。)

EMBED 元素則是由 NetScape Navigator 2 引入,用於在 HTML 文檔中插入符合網景插件應用程序編程接口(NPAPI)規範的插件。NPAPI 插件是跨平臺的,並可以在所有實現了此接口規範的瀏覽器中使用。目前的主流瀏覽器中 IE 系列以外的瀏覽器均支持 NPAPI 插件。
事實上 IE3.0 就支持 NPAPI,但是在 IE5.5 SP2 後微軟出於安全考慮停止了對 NPAPI 的支持,轉而推薦用戶使用其 ActiveX 技術作爲替代。(更多請參考 MSDN:
Netscape 式的插件在升級 Internet Explorer 後不工作
EMBED 元素擁有一個名爲 pluginspage 的屬性,其值爲 NPAPI 插件的 URL,與 IE 中 OBJECT 元素的 codebase 屬性類似,它告訴了瀏覽器插件的下載地址。

EMBED 元素不屬於 HTML4.01 規範中的元素,HTML 文檔中直接使用 EMBED 元素可能無法通過 W3C 校驗。不過 EMBED 元素目前已經被添加到 HTML5 草案中。(參加 HTML5 草案:4.8.3 The embed element

至此若需要在 HTML 文檔中引入一個已安裝的通用的插件,如 Flash,則在 IE 中使用 OBJECT 元素,非 IE 中則使用 EMBED 元素。此外 IE 中也支持 EMBED 元素引入設置了正確 MIME 的插件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章