JavaScript获取Flash对象的几种方法对比与实现

作者:拾光

时间:2026-10-28

浏览:68

本文对比分析了JavaScript获取Flash对象的几种常见方法。首先介绍了一种兼容多浏览器但代码量较大的保守方案,其次展示了一种简洁的数组访问写法,最后提供一种经多版本IE及浏览器测试通过的简化实现。文章提供了具体代码示例,并邀请读者反馈不同浏览器环境下的兼容性测试结果,以优化获取Flash对象的通用方案。

文章目录

JavaScript获取Flash对象的方法对比

网络上关于JavaScript获取Flash对象的示例众多,笔者也尝试了多种方案。


尽管这些方法大多可以运行,但并未完全满足我的特定需求。


随后我参考了百度的实现,虽然其规范严谨且覆盖了各种边界情况,但代码体积却令人担忧。


该方案前后涉及近20行代码,即便经过压缩处理,大小仍达到864字节。



基于上述考量,本文旨在提供一种更精简的解决方案。


我将整理并分享几种较为满意的获取方法,供读者测试与参考。


同时,也欢迎大家协助进行兼容性测试,若发现不兼容的情况,请在评论区留言并注明浏览器版本,以便我进一步测试并修复代码。


接下来我们直接查看相关代码实现。


保守兼容方案

具体代码如下:

 
function getFlashMovieObject( movieName ) {
if (window.document[movieName]) {
return window.document[movieName];
} 
if (navigator.appName.indexOf("Microsoft Internet") == -1) {
if (document.embeds && document.embeds[movieName])
return document.embeds[movieName];
} else { // if (navigator.appName.indexOf("Microsoft Internet")!=-1)
return document.getElementById(movieName);
} 
} 

该方法相对保守:若能在document中直接获取到对象则直接返回;若未获取到,则使用embeds作为兼容替补进行尝试。


对于IE浏览器需要特殊处理,此处作者通常使用getElementById,而其他浏览器则较多使用window对象访问。


值得注意的是,getElementById获取的是object元素的ID,因为embeds元素仅有name属性而没有ID属性,因此该方法在IE环境下是可靠的。


简洁访问方案

另一种简洁的实现方式如下:

 
var flash = document["myFlash"] || window["myFlash"];

此方法逻辑清晰且代码简洁,此处不再赘述。


简化实现方案

还有一种更简化的写法:

 
var flash = document["myFlash"];

这是我综合多种版本后自行编写的实现。我在本地安装了多种浏览器,并在虚拟机中测试了从IE6到IE10的版本,均能顺利通过测试,对此结果我感到有些意外。


当然,如果在正式生产环境中使用,我仍会推荐第一种方案以确保最大兼容性;但在某些不需要兼容多浏览器的特殊场景下,可以考虑使用这种简化方案。



下面是实际应用的示例,分别使用上述三种方法获取Flash对象,并对Flash进行控制测试。


如果各位朋友发现某些方案无法通过测试,麻烦留下浏览器版本号以及无法通过的方案名称,在此先表示感谢。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章