判断客户端浏览器是否安装了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 相关文章推荐
JavaScript 10件让人费解的事情
Feb 15 Javascript
javascript new fun的执行过程
Aug 05 Javascript
json2.js的初步学习与了解
Oct 06 Javascript
jquery创建并行对象或者合并对象的实现代码
Oct 10 Javascript
JavaScript字符串对象substr方法入门实例(用于截取字符串)
Oct 16 Javascript
js实现文本框只允许输入数字并限制数字大小的方法
Aug 19 Javascript
AngularJS实现数据列表的增加、删除和上移下移等功能实例
Sep 05 Javascript
使用vue-resource进行数据交互的实例
Sep 02 Javascript
Node.js实现发送邮件功能
Nov 06 Javascript
vue鼠标悬停事件实例详解
Apr 01 Javascript
Jquery异步上传文件代码实例
Nov 13 jQuery
JQuery省市联动效果实现过程详解
May 08 jQuery
基于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伪造referer实例代码
2008/09/20 PHP
PHP中strtotime函数使用方法分享
2012/01/10 PHP
提高php运行速度的一些小技巧分享
2012/07/03 PHP
教你如何用php实现LOL数据远程获取
2014/06/10 PHP
PHP实现的简单操作SQLite数据库类与用法示例
2017/06/19 PHP
Laravel手动返回错误码示例
2019/10/22 PHP
TP5框架简单登录功能实现方法示例
2019/10/31 PHP
JavaScript 中的事件教程
2007/04/05 Javascript
Extjs学习笔记之二 初识Extjs之Form
2010/01/07 Javascript
通过DOM脚本去设置样式信息
2010/09/19 Javascript
javascript表单验证 - Parsley.js使用和配置
2013/01/25 Javascript
详解JavaScript语法对{}处理的坑爹之处
2014/06/05 Javascript
jQuery异步加载数据并添加事件示例
2014/08/24 Javascript
node.js中的fs.existsSync方法使用说明
2014/12/17 Javascript
使用jquery实现的循环连续可停顿滚动实例
2016/11/23 Javascript
基于JavaScript实现随机颜色输入框
2016/12/10 Javascript
基于JavaScript实现滑动门效果
2017/03/16 Javascript
Vue指令的钩子函数使用方法
2017/03/20 Javascript
jQuery zTree搜索-关键字查询 递归无限层功能实现代码
2018/01/25 jQuery
浅谈mvvm-simple双向绑定简单实现
2018/04/18 Javascript
js实现鼠标单击Tab表单切换效果
2018/05/16 Javascript
微信小程序实现点击空白隐藏的方法示例
2019/08/13 Javascript
Python中的文件和目录操作实现代码
2011/03/13 Python
跟老齐学Python之有容乃大的list(1)
2014/09/14 Python
聊聊Python中的pypy
2018/01/12 Python
python正则表达式匹配不包含某几个字符的字符串方法
2019/07/23 Python
美国珠宝精品店:Opulent Jewelers
2019/08/20 全球购物
狼和鹿教学反思
2014/02/05 职场文书
学习党的群众路线教育实践活动心得体会
2014/03/01 职场文书
中国梦演讲稿开场白
2014/08/28 职场文书
团党委领导干部党的群众路线教育实践活动个人对照检查材料思想汇
2014/10/05 职场文书
瘦西湖导游词
2015/02/03 职场文书
学籍证明模板
2015/06/18 职场文书
导游词之五台山
2019/10/11 职场文书
五年级作文之劳动作文
2019/11/12 职场文书
Win11怎么修改电源模式?Win11修改电源模式的方法
2022/04/05 数码科技