浏览 3116 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-06-05
为了兼容多数浏览器,我们一般同时采用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]。
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |