omiga 发布于2010-06-08 15:20 | 123次阅读 | 字体: 打印预览


说object?说啥呢?先简单说下object历史。Long long ago……为了实现将大量不需要在服务端的运算转移到到客户端,NetScape(NS)率先率先实现了对Java applet的支持。当时如日中天的微软当然不甘落后,而且微软觉得自己可以更NB一点,于是自己重新开发了ActiveX以替代Java applet。众所周知,HTML是标记性语言,任何的内容都需要标签来表示。于是NetScaple使用了标签来嵌入Java applet,IE则使用标签来嵌入ActiveX。尽管在当时NS具有绝对优势的市场份额,而IE因与windows捆绑也“鸡犬升天”,一步步蚕食着NS的市场,双方为了争夺更多的用户,NS在随后的版本中也实现了对的支持,当然仅仅是实现了对标签的支持,而不是ActiveX;而IE则也开始支持标签。

后来HTML4提出了一个概念-inclusions(包含对象),Java applet、ActiveX均是inclusions,也包括.png、.gif等图像文件,.avi等视频文件。同时标准建议使用标签来嵌入inclusions。主流浏览器也开始提供对更为良好的支持,但是在实现上还是存在一些差异。比如IE始终将嵌入的对象作为ActiveX来处理。

那么如何使用来嵌入对象?举一个大家都很熟悉的嵌入flash的例子。以下三段代码均能在现代主流浏览器中得到正确地解析而将flash嵌入到页面中。

正如前面所说,由于历史原因,最初对嵌入对象的实现方式不尽相同,但到今天个主浏览器对嵌入对象方式都具有了较好的兼容性。不论是使用,还是都能在页面中嵌入对象。第三段代码是Dreamweaver中插入flash使用的代码,这段代码更好地解决了浏览器兼容性的问题,包括一些老版本浏览器。当浏览器不支持标签时,会解析中除外的其他标签,所以第三段代码较之第一、二段代码具有更好的兼容性。

关于中相关属性的介绍就不在此赘述了,大家可参考其他一些资料都有详细介绍。在此提醒两处需要注意的地方:

在使用嵌入对象的时候,需要为设置id属性,否则IE会报错 使用兼容方式嵌入对象的时候,对象的获取存在差异。标准的方法是用下面函数即可获取到对象

function getSwfMovie(movieName){ if(navigator.appName.indexOf("Microsoft")!=-1) return window[movieName];  else return document[movieName]; }

但是该方法在Firefox中无法获取到对象,而是需要通过获取来完成

function getSwfMovie(movieName){ if(navigator.appName.indexOf("Microsoft")!=-1) return window[movieName];  else return document[movieName].getElementsByTagName("embed")[0]; }

© omiga for omiga, 2010. | Permalink | One comment | Add to del.icio.us
Post tags: flash, HTML4, object


本文出处 : http://omiga.org/blog/archives/1370 end

上一篇:[RIA]西门子奇妙之夜

下一篇:DigitalGlobe发布南非世界杯十大场馆卫星地图