判断客户端浏览器是否安装了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添加String.Format方法
Aug 11 Javascript
Extjs列表详细信息窗口新建后自动加载解决方法
Apr 02 Javascript
JQuery Ajax通过Handler访问外部XML数据的代码
Jun 01 Javascript
不使用XMLHttpRequest实现异步加载 Iframe和script
Oct 29 Javascript
js中arguments的用法(实例讲解)
Nov 30 Javascript
Javascript获取随机数的实现方法
Jun 22 Javascript
Bootstrap如何创建表单
Oct 21 Javascript
Vue渲染函数详解
Sep 15 Javascript
本地搭建微信小程序服务器的实现方法
Oct 27 Javascript
详解JavaScript中的函数、对象
Apr 01 Javascript
Vue实现多标签选择器
Nov 28 Javascript
Vue实现手机号、验证码登录(60s禁用倒计时)
Dec 19 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动态分页函数,PHP开发分页必备啦
2011/11/07 PHP
php实现执行某一操作时弹出确认、取消对话框
2013/12/30 PHP
phpExcel中文帮助手册之常用功能指南
2014/08/18 PHP
php 实现Hash表功能实例详解
2016/11/29 PHP
实现laravel 插入操作日志到数据库的方法
2019/10/11 PHP
对JavaScript中this指针的新理解分享
2015/01/31 Javascript
jQuery统计指定子元素数量的方法
2015/03/17 Javascript
javascript解三阶幻方(九宫格)
2015/04/22 Javascript
javascript创建函数的20种方式汇总
2015/06/23 Javascript
js省市联动效果完整实例代码
2015/12/09 Javascript
Bootstrap每天必学之导航条(二)
2016/03/01 Javascript
jQuery实现图像旋转动画效果
2016/05/29 Javascript
解决同一页面中两个iframe互相调用jquery,js函数的方法
2016/12/12 Javascript
js实现选项卡内容切换以及折叠和展开效果【推荐】
2017/01/08 Javascript
vue-loader教程介绍
2017/06/14 Javascript
纯js代码生成可搜索选择下拉列表的实例
2018/01/11 Javascript
vue 指定组件缓存实例详解
2018/04/01 Javascript
vue-router 源码之实现一个简单的 vue-router
2018/07/02 Javascript
Vue从TodoList中学父子组件通信
2019/02/05 Javascript
layui的表单提交以及验证和修改弹框的实例
2019/09/09 Javascript
javascript如何实现create方法
2019/11/04 Javascript
[05:31]DOTA2英雄梦之声_第08期_莉娜
2014/06/23 DOTA
[01:33:14]LGD vs VP Supermajor 败者组决赛 BO3 第二场 6.10
2018/07/04 DOTA
windows下python模拟鼠标点击和键盘输示例
2014/02/28 Python
python使用xlrd模块读写Excel文件的方法
2015/05/06 Python
python操作mysql数据库
2017/03/05 Python
如何实现删除numpy.array中的行或列
2018/05/08 Python
pandas 空数据处理方法详解
2019/11/02 Python
Python实现屏幕录制功能的代码
2020/03/02 Python
servlet面试题
2012/08/20 面试题
电气工程及其自动化专业毕业生自荐信
2014/06/21 职场文书
2014年党员自我评议(5篇)
2014/09/12 职场文书
工程合作意向书范本
2015/05/09 职场文书
小学毕业感言100字
2015/07/30 职场文书
golang协程池模拟实现群发邮件功能
2021/05/02 Golang
clear 万能清除浮动(clearfix:after)
2023/05/21 HTML / CSS