首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

webkit/opera中window[name]获取flash对象的非一般实现

2012-12-26 
webkit/opera中window[name]获取flash对象的特殊实现为了兼容多数浏览器,我们一般同时采用object和embed标

webkit/opera中window[name]获取flash对象的特殊实现

为了兼容多数浏览器,我们一般同时采用object和embed标签插入flash,如下:

<object id="mySwf" data="">      <embed src="" name="mySwf"/>  </object>  

?

有时候需要获取到flash对象,因此给object添加了id,给embed添加了name,两者的值刚好相同。此时如果使用window[name]来获取flash对象,各浏览器的表现就不一致了:

<object id="mySwf" data="">      <embed src="" name="mySwf"/>  </object>    <script>      alert(window['mySwf'])   </script>  

?

?

IE :能获取,元素为object

Firefox :undefined,不能获取

Opera :object HTMLCollection

Safari/Chrome :object HTMLCollection

?

可以看到,在Opera/Safar/Chrome获取到的是一个集合HTMLCollection,弹出其length是2,在Opera/Safari/chrome中分别取出第1,2个元素分别是object,embed元素。

?

基本如下:

IE,window['mySwf']中的mySwf指的是Object[id=mySwf]

?

Firefox,window['mySwf']没有获取到任何元素,不支持这么获取

?

Opera/Safari/Chrome,window['mySwf']同时获取id=mySwf,name=mySwf的元素

?

最后列出准确的获取flash对象的方式:

?

function getFlashObj(name){        return document[name] || window[name];   }  

?

?

这种方式在IE中获取的仍然是object对象,Firefox/Opera/Safari/Chrome中获取的是embed。

?

注意,document[name]和window[name]顺序不能调过来,如下则是错误的

?

function getFlashObj(name){      return window[name] || document[name];   }  

?

?

此外,也可判断浏览器,以下是钱兄 从adobe官网提供的函数:

?

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

?

?

如果是IE使用window[movieName],其它浏览器则使用document[movieName]。

热点排行