判断客户端浏览器是否安装了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 相关文章推荐
js验证表单第二部分
Nov 25 Javascript
jQuery帮助之筛选查找 children([expr])
Jan 31 Javascript
jqPlot 图表中文API使用文档及源码和在线示例
Feb 07 Javascript
jQuery实现鼠标移到元素上动态提示消息框效果
Oct 20 Javascript
3分钟掌握常用的JS操作JSON方法总结
Apr 25 Javascript
使用JavaScript实现点击循环切换图片效果
Sep 03 Javascript
JavaScript判断日期时间差的实例代码
Mar 01 Javascript
三分钟学会用ES7中的Async/Await进行异步编程
Jun 14 Javascript
angular6 利用 ngContentOutlet 实现组件位置交换(重排)
Nov 02 Javascript
在NPM发布自己造的轮子的方法步骤
Mar 09 Javascript
Vue.js暴露方法给WebView的使用操作
Sep 07 Javascript
Ant Design的可编辑Tree的实现操作
Oct 31 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
在PHP3中实现SESSION的功能(一)
2006/10/09 PHP
php+mysql写的简单留言本实例代码
2008/07/25 PHP
PHP 字符串正则替换函数preg_replace使用说明
2011/07/15 PHP
浅谈php正则表达式中的非贪婪模式匹配的使用
2014/11/25 PHP
PHP简单实现欧拉函数Euler功能示例
2017/11/06 PHP
Yii框架日志记录Logging操作示例
2018/07/12 PHP
php设计模式之观察者模式定义与用法经典示例
2019/09/19 PHP
js iframe跨域访问(同主域/非同主域)分别深入介绍
2013/01/24 Javascript
jquery如何获取复选框的值
2013/12/12 Javascript
js保留小数点后几位的写法
2014/01/03 Javascript
jquery对元素拖动排序示例
2014/01/16 Javascript
JavaScript中对象介绍
2014/12/31 Javascript
js实现网页右上角滑出会自动消失大幅广告的方法
2015/02/27 Javascript
JQuery操作元素的css样式
2015/03/09 Javascript
JS实现仿新浪微博发布内容为空时提示功能代码
2015/08/19 Javascript
javascript日期比较方法实例分析
2016/06/17 Javascript
js处理层级数据结构的方法小结
2017/01/17 Javascript
ES6新特性之模块Module用法详解
2017/04/01 Javascript
基于vue框架手写一个notify插件实现通知功能的方法
2019/03/31 Javascript
vue组件 keep-alive 和 transition 使用详解
2019/10/11 Javascript
python中正则表达式的使用方法
2018/02/25 Python
Scrapy使用的基本流程与实例讲解
2018/10/21 Python
Python产生Gnuplot绘图数据的方法
2018/11/09 Python
Python使用folium excel绘制point
2019/01/03 Python
python3 assert 断言的使用详解 (区别于python2)
2019/11/27 Python
python错误调试及单元文档测试过程解析
2019/12/19 Python
django haystack实现全文检索的示例代码
2020/06/24 Python
威尔逊皮革:Wilsons Leather
2018/12/07 全球购物
美国球迷装备的第一来源:FOCO
2020/07/03 全球购物
勤奋学习演讲稿
2014/05/10 职场文书
2014年党员整改措施范文
2014/09/21 职场文书
行风评议整改报告
2014/11/06 职场文书
2014年民警工作总结
2014/11/25 职场文书
安阳殷墟导游词
2015/02/10 职场文书
Golang 正则匹配效率详解
2021/04/25 Golang
Ruby处理YAML和json数据
2022/04/18 Ruby