判断客户端浏览器是否安装了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 相关文章推荐
validator验证控件使用代码
Nov 23 Javascript
使用GruntJS链接与压缩多个JavaScript文件过程详解
Aug 02 Javascript
jQuery把表单元素变为json对象
Nov 06 Javascript
jQuery网页定位导航特效实现方法
Dec 19 Javascript
DOM事件探秘篇
Feb 15 Javascript
Angular 输入框实现自定义验证功能
Feb 19 Javascript
详解React开发中使用require.ensure()按需加载ES6组件
May 12 Javascript
js 简易版滚动条实例(适用于移动端H5开发)
Jun 26 Javascript
BootStrap表单验证中的非Submit类型按钮点击时触发验证的坑
Sep 05 Javascript
浅谈JavaScript作用域
Dec 06 Javascript
vue使用watch监听属性变化
Apr 30 Vue.js
js作用域及作用域链工作引擎
Jul 07 Javascript
基于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
VUEJS实战之利用laypage插件实现分页(3)
2016/06/13 Javascript
JS简单实现仿百度控制台输出信息效果
2016/09/04 Javascript
vue实现自定义多选与单选的答题功能
2018/07/05 Javascript
AngularJS 多指令Scope问题的解决
2018/10/25 Javascript
微信小程序实现预览图片功能
2020/10/22 Javascript
Vue.js实现开发购物车功能的方法详解
2019/02/22 Javascript
Koa日志中间件封装开发详解
2019/03/09 Javascript
基于canvasJS在PHP中制作动态图表
2020/05/30 Javascript
vue.js+element 默认提示中英文操作
2020/11/11 Javascript
js实现Element中input组件的部分功能并封装成组件(实例代码)
2021/03/02 Javascript
[00:37]DOTA2上海特级锦标赛 Secert 战队宣传片
2016/03/03 DOTA
python使用win32com在百度空间插入html元素示例
2014/02/20 Python
Python 基础知识之字符串处理
2017/01/06 Python
python3+PyQt5实现文档打印功能
2018/04/24 Python
Python实现数据可视化看如何监控你的爬虫状态【推荐】
2018/08/10 Python
Python3调用百度AI识别图片中的文字功能示例【测试可用】
2019/03/13 Python
Django实现跨域请求过程详解
2019/07/25 Python
Python使用python-docx读写word文档
2019/08/26 Python
python读写文件write和flush的实现方式
2020/02/21 Python
浅谈JupyterNotebook导出pdf解决中文的问题
2020/04/22 Python
css3实现input输入框颜色渐变发光效果代码
2014/04/02 HTML / CSS
HTML5中的Article和Section元素认识及使用
2013/03/22 HTML / CSS
加拿大领先的冒险和户外零售商:Atmosphere
2017/12/19 全球购物
意大利单身交友网站:Meetic
2020/07/12 全球购物
师范教师大学生职业生涯规划范文
2014/01/05 职场文书
便利店投资创业计划书
2014/02/08 职场文书
测绘专业大学生职业生涯规划书
2014/02/10 职场文书
合唱兴趣小组活动总结
2014/07/10 职场文书
考试作弊检讨书1000字(5篇)
2014/10/19 职场文书
护士年终个人总结
2015/02/13 职场文书
4S店客服专员岗位职责
2015/04/07 职场文书
2015年加油站工作总结
2015/05/13 职场文书
2016年村党支部公开承诺书
2016/03/24 职场文书
Pygame如何使用精灵和碰撞检测
2021/11/17 Python
DIV CSS实现网页背景半透明效果
2021/12/06 HTML / CSS
Oracle 多表查询基本语法实例
2022/04/18 Oracle