判断客户端浏览器是否安装了Flash插件的多种方法


Posted in Javascript onAugust 11, 2010

常用的方法:

<SCRIPT LANGUAGE="JavaScript"> 
<!-- 
var swf = new ActiveXObject('ShockwaveFlash.ShockwaveFlash'); 
(swf) ? document.writeln('你已经安装了插件') : document.writeln('你没有安装插件'); 
// --> 
</SCRIPT> 
[code] 
动态加载. 
[code] 
<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="mFlash" 
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" 
WIDTH="120" HEIGHT="60" id="468x60" ALIGN="" VIEWASTEXT> 
<PARAM NAME=quality VALUE=high> 
</OBJECT> 
<input type=button onclick="addFlash()" value="Add"> 
<input type=button onclick="mFlash.Stop()" value="Stop"> 
<input type=button onclick="mFlash.Play()" value="Play"> 
<script> 
function addFlash() { 
mFlash.movie="https://3water.com/images/ad/WIBU.swf"; 
mFlash.Play(); 
} 
</script>

有很多检测PLUGIN的方法,因为不能只用一个方法就解决了这个问题,所以才有了这么多的方法
一、内置的检测
NN和MAC上的IE不能使用以下的检测,只有WIN上的IE可以
1、即需即装
在IE的工具-Internet选项-高级-浏览里面的即需即装选项如果生效了,当浏览器需要,就会从MS的网站下载Flash Player ActiveX control
如果没生效,你没安装PLUGIN又直接进入了网页,就会看到一个裂开的方块那样的小ICON,点一下也可以带你去安装
2、HTML里面的OBJECT标签里面的classid 和 codebase属性
classid是ActiveX control的标识,例如FLASH PLAYER的就是:
clsid:D27CDB6E-AE6D-11cf-96B8-444553540000
codebase则是下载插件的地址,例如FLASH4的(如果浏览器检查到version后面的数字低于你已有版本,就不会安装):
http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,0,2,0
这些HTML标签当你在FLASH中PUBLIC或者DW中插入时都会自动加入
浏览器执行到这些标签就会进行检测了
二、用SCRIPT来检测
这种方法是为了摆脱上一种办法的局限,例如DW里面那个叫"Check Plug-in"的behavior
这种方法在有些不能执行SCRIPT的机器上还是用不了,例如MAC上IE4.5之前版本,WIN31上面的IE。
还有某些用户是关闭SCRPIT执行的。
三、用FLASH来检测
如果用户连SCRPIT都不执行的话,就只能用这招了。这也是MM自己用的方法。
做一个检测的HTML,里面放一个SWF,里面只有一句GetURL("你真正的页面")
同时在HTML的<HEAD>里面放<META HTTP-EQUIV="Refresh" CONTENT="10; URL="没有安装FLASH的页面">
如果在10秒之内SWF没有把你带到真正的页面,检测的HTML就会把你带到没安装的页面
四、最后一个办法,让用户自己选择
这也是最常见的了,很多网站都做一个入口的页面,下面就有安装PLUGIN的小ICON
<!-- start VBSCRIPT plugin detection--> 
<SCRIPT LANGUAGE=VBScript> 
Private i, x, MM_FlashControlVersion 
On Error Resume Next 
x = null 
MM_FlashControlVersion = 0 
var Flashmode 
FlashMode = False 
For i = 5 To 1 Step -1 
Set x = CreateObject("ShockwaveFlash.ShockwaveFlash." & i) 
MM_FlashControlInstalled = IsObject(x) 
If MM_FlashControlInstalled Then 
MM_FlashControlVersion = CStr(i) 
Exit For 
End If 
Next 
FlashMode = (MM_FlashControlVersion >= 5) 
If FlashMode = True Then 
document.write "有FLASH的HTML" 
Else 
document.write "无FLASH的HTML" 
End If 
</SCRIPT><!-- end VBSCRIPT PLUGIN DETECTION --> <script type="text/javascript" language="JavaScript"> 
<!-- start JS detection 
FlashMode = 0; 
if (navigator.plugins && navigator.plugins.length > 0) 
{ 
if (navigator.plugins["Shockwave Flash"]) 
{ 
var plugin_version = 0; 
var words = navigator.plugins["Shockwave Flash"].description.split(" "); 
for (var i = 0; i < words.length; ++i) 
{ 
if (isNaN(parseInt(words[i]))) 
continue; 
plugin_version = words[i]; 
} 
if (plugin_version >= 5) 
{ 
var plugin = navigator.plugins["Shockwave Flash"]; 
var numTypes = plugin.length; 
for (j = 0; j < numTypes; j++) 
{ 
mimetype = plugin[j]; 
if (mimetype) 
{ 
if (mimetype.enabledPlugin && (mimetype.suffixes.indexOf("swf") != -1)) 
FlashMode = 1; 
// Mac wierdness 
if (navigator.mimeTypes["application/x-shockwave-flash"] == null) 
FlashMode = 0; 
} 
} 
} 
} 
} 
if (FlashMode == 1) 
{ 
document.write('有FLASH的HTML');} 
else { 
document.write('无FLASH的HTML'); } 
// end JS detection -->

通过以下的Javascript脚本,可以检测当前浏览器是否安装Flash插件以及插件的版本是否满足要求。
<SCRIPT LANGUAGE="JavaScript1.1"> 
<!-- 
// U can change this number to check specific version of flash 
var MM_contentVersion = 6; 
var plugin = (navigator.mimeTypes && navigator.mimeTypes["application/x-shockwave-flash"]) ? 
navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin : 0; 
if ( plugin ) { 
var words = navigator.plugins["Shockwave Flash"].description.split(" "); 
for (var i = 0; i < words.length; ++i){ 
if (isNaN(parseInt(words[i]))) 
continue; 
var MM_PluginVersion = words[i]; 
} 
var MM_FlashCanPlay = MM_PluginVersion >= MM_contentVersion; 
} 
else if( navigator.userAgent && navigator.userAgent.indexOf("MSIE")>=0 && 
(navigator.appVersion.indexOf("Win") != -1) ) { 
//FS hide this from IE4.5 Mac by splitting the tag 
document.write('<SCR' + 'IPT LANGUAGE=VBScript\> \n'); 
document.write('on error resume next \n'); 
document.write('MM_FlashCanPlay = ( IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash." & MM_contentVersion)))\n'); 
document.write('</SCR' + 'IPT\> \n'); 
} 
if ( MM_FlashCanPlay ) { 
alert("Flash Detection OK. U can play."); 
} 
else{ 
alert("Flash Detection Failed. Need Download specific version."); 
} 
//--> 
</SCRIPT> <script> 
//自己总结的 
//IE中判断是否安装插件 
var swf; 
function IE_Flash() 
{ 
try 
{ 
var swf=new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); 
alert("已安装插件"); 
} 
catch(e) 
{ 
alert("没有安装插件"); 
} 
} 
//FireFox,Chrome中判断是否安装插件 
function FF_or_Chrome_Flash() 
{ 
var swf=navigator.plugins["Shockwave Flash"]; 
(swf)?alert("已安装插件"):alert("没有安装插件"); 
} 
</script>
Javascript 相关文章推荐
json字符串之间的相互转换示例代码
Aug 21 Javascript
原生js页面滚动延迟加载图片
Dec 20 Javascript
盘点javascript 正则表达式中 中括号的【坑】
Mar 16 Javascript
javascript小数精度丢失的完美解决方法
May 31 Javascript
JavaScript数组复制详解
Feb 02 Javascript
js学习心得_一个简单的动画库封装tween.js
Jul 14 Javascript
基于js文件加载优化(详解)
Jan 03 Javascript
解决vue中无法动态修改jqgrid组件 url地址的问题
Mar 01 Javascript
微信小程序 wepy框架与iview-weapp的用法详解
Apr 10 Javascript
基于javascript实现贪吃蛇小游戏
Nov 25 Javascript
在Vue中使用Viser说明(基于AntV-G2可视化引擎)
Oct 28 Javascript
vue3 watch和watchEffect的使用以及有哪些区别
Jan 26 Vue.js
基于JQuery的数字改变的动画效果--可用来做计数器
Aug 11 #Javascript
JQuery最佳实践之精妙的自定义事件
Aug 11 #Javascript
用js解决数字不能换行问题
Aug 10 #Javascript
JavaScript 错误处理与调试经验总结
Aug 10 #Javascript
根据对象的某一属性进行排序的js代码(如:name,age)
Aug 10 #Javascript
javascript中的prototype属性实例分析说明
Aug 09 #Javascript
jQuery Dialog 弹出层对话框插件
Aug 09 #Javascript
You might like
PHP新手上路(十)
2006/10/09 PHP
自动生成文章摘要的代码[PHP 版本]
2007/03/20 PHP
Zend的Registry机制的使用说明
2013/05/02 PHP
关于PHP session 存储方式的详细介绍
2013/06/25 PHP
浅谈Eclipse PDT调试PHP程序
2014/06/09 PHP
destoon整合ucenter后注册页面不跳转的解决方法
2014/06/21 PHP
PHP5.3新特性小结
2016/02/14 PHP
golang与php实现计算两个经纬度之间距离的方法
2016/07/22 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
禁止JQuery中的load方法装载IE缓存中文件的方法
2009/09/11 Javascript
js 遍历对象的属性的代码
2011/12/29 Javascript
自动刷新网页,自动刷新当前页面,JS调用
2013/06/24 Javascript
jQuery实现动画效果circle实例
2015/08/06 Javascript
JS实现的文字与图片定时切换效果代码
2015/10/06 Javascript
小心!AngularJS结合RequireJS做文件合并压缩的那些坑
2016/01/09 Javascript
JavaScript prototype属性详解
2016/10/25 Javascript
Angular 项目实现国际化的方法
2018/01/08 Javascript
Vue实现6位数密码效果
2018/08/18 Javascript
详解使用element-ui table组件的筛选功能的一个小坑
2018/11/02 Javascript
electron + vue项目实现打印小票功能及实现代码
2018/11/25 Javascript
vue实现密码显示与隐藏按钮的自定义组件功能
2019/04/23 Javascript
页面内锚点定位及跳转方法总结(推荐)
2019/04/24 Javascript
JavaScript实现五子棋游戏的方法详解
2019/07/08 Javascript
JS实现iframe中子父页面跨域通讯的方法分析
2020/03/10 Javascript
webpack3.0升级4.0的方法步骤
2020/04/02 Javascript
python监控网卡流量并使用graphite绘图的示例
2014/04/27 Python
详解如何用TensorFlow训练和识别/分类自定义图片
2019/08/05 Python
ebookers英国:隶属全球最大的在线旅游公司Expedia
2017/12/28 全球购物
土木工程专业个人求职信
2013/12/05 职场文书
上学迟到的检讨书
2014/01/11 职场文书
担保贷款承诺书
2015/04/30 职场文书
出生证明格式
2015/06/15 职场文书
怎样做好公众演讲能力?
2019/08/28 职场文书
Python基础之操作MySQL数据库
2021/05/06 Python
Python MNIST手写体识别详解与试练
2021/11/07 Python
MySQL自定义函数及触发器
2022/08/05 MySQL