判斷客戶端瀏覽器是否安裝了Flash插件的多種方法
更新時(shí)間:2010年08月11日 22:13:12 作者:
各種方法判斷客戶端瀏覽器是否安裝了Flash插件,對(duì)于必須要支持flash才能瀏覽的頁面來說,提前做下說明,用戶體驗(yàn)會(huì)更好。
常用的方法:
<SCRIPT LANGUAGE="JavaScript">
<!--
var swf = new ActiveXObject('ShockwaveFlash.ShockwaveFlash');
(swf) ? document.writeln('你已經(jīng)安裝了插件') : document.writeln('你沒有安裝插件');
// -->
</SCRIPT>
[code]
動(dòng)態(tài)加載.
[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="http://www.dbjr.com.cn/images/ad/WIBU.swf";
mFlash.Play();
}
</script>
有很多檢測(cè)PLUGIN的方法,因?yàn)椴荒苤挥靡粋€(gè)方法就解決了這個(gè)問題,所以才有了這么多的方法
一、內(nèi)置的檢測(cè)
NN和MAC上的IE不能使用以下的檢測(cè),只有WIN上的IE可以
1、即需即裝
在IE的工具-Internet選項(xiàng)-高級(jí)-瀏覽里面的即需即裝選項(xiàng)如果生效了,當(dāng)瀏覽器需要,就會(huì)從MS的網(wǎng)站下載Flash Player ActiveX control
如果沒生效,你沒安裝PLUGIN又直接進(jìn)入了網(wǎng)頁,就會(huì)看到一個(gè)裂開的方塊那樣的小ICON,點(diǎn)一下也可以帶你去安裝
2、HTML里面的OBJECT標(biāo)簽里面的classid 和 codebase屬性
classid是ActiveX control的標(biāo)識(shí),例如FLASH PLAYER的就是:
clsid:D27CDB6E-AE6D-11cf-96B8-444553540000
codebase則是下載插件的地址,例如FLASH4的(如果瀏覽器檢查到version后面的數(shù)字低于你已有版本,就不會(huì)安裝):
http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,0,2,0
這些HTML標(biāo)簽當(dāng)你在FLASH中PUBLIC或者DW中插入時(shí)都會(huì)自動(dòng)加入
瀏覽器執(zhí)行到這些標(biāo)簽就會(huì)進(jìn)行檢測(cè)了
二、用SCRIPT來檢測(cè)
這種方法是為了擺脫上一種辦法的局限,例如DW里面那個(gè)叫"Check Plug-in"的behavior
這種方法在有些不能執(zhí)行SCRIPT的機(jī)器上還是用不了,例如MAC上IE4.5之前版本,WIN31上面的IE。
還有某些用戶是關(guān)閉SCRPIT執(zhí)行的。
三、用FLASH來檢測(cè)
如果用戶連SCRPIT都不執(zhí)行的話,就只能用這招了。這也是MM自己用的方法。
做一個(gè)檢測(cè)的HTML,里面放一個(gè)SWF,里面只有一句GetURL("你真正的頁面")
同時(shí)在HTML的<HEAD>里面放<META HTTP-EQUIV="Refresh" CONTENT="10; URL="沒有安裝FLASH的頁面">
如果在10秒之內(nèi)SWF沒有把你帶到真正的頁面,檢測(cè)的HTML就會(huì)把你帶到?jīng)]安裝的頁面
四、最后一個(gè)辦法,讓用戶自己選擇
這也是最常見的了,很多網(wǎng)站都做一個(gè)入口的頁面,下面就有安裝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腳本,可以檢測(cè)當(dāng)前瀏覽器是否安裝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>
//自己總結(jié)的
//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>
復(fù)制代碼 代碼如下:
<SCRIPT LANGUAGE="JavaScript">
<!--
var swf = new ActiveXObject('ShockwaveFlash.ShockwaveFlash');
(swf) ? document.writeln('你已經(jīng)安裝了插件') : document.writeln('你沒有安裝插件');
// -->
</SCRIPT>
[code]
動(dòng)態(tài)加載.
[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="http://www.dbjr.com.cn/images/ad/WIBU.swf";
mFlash.Play();
}
</script>
有很多檢測(cè)PLUGIN的方法,因?yàn)椴荒苤挥靡粋€(gè)方法就解決了這個(gè)問題,所以才有了這么多的方法
一、內(nèi)置的檢測(cè)
NN和MAC上的IE不能使用以下的檢測(cè),只有WIN上的IE可以
1、即需即裝
在IE的工具-Internet選項(xiàng)-高級(jí)-瀏覽里面的即需即裝選項(xiàng)如果生效了,當(dāng)瀏覽器需要,就會(huì)從MS的網(wǎng)站下載Flash Player ActiveX control
如果沒生效,你沒安裝PLUGIN又直接進(jìn)入了網(wǎng)頁,就會(huì)看到一個(gè)裂開的方塊那樣的小ICON,點(diǎn)一下也可以帶你去安裝
2、HTML里面的OBJECT標(biāo)簽里面的classid 和 codebase屬性
classid是ActiveX control的標(biāo)識(shí),例如FLASH PLAYER的就是:
clsid:D27CDB6E-AE6D-11cf-96B8-444553540000
codebase則是下載插件的地址,例如FLASH4的(如果瀏覽器檢查到version后面的數(shù)字低于你已有版本,就不會(huì)安裝):
http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,0,2,0
這些HTML標(biāo)簽當(dāng)你在FLASH中PUBLIC或者DW中插入時(shí)都會(huì)自動(dòng)加入
瀏覽器執(zhí)行到這些標(biāo)簽就會(huì)進(jìn)行檢測(cè)了
二、用SCRIPT來檢測(cè)
這種方法是為了擺脫上一種辦法的局限,例如DW里面那個(gè)叫"Check Plug-in"的behavior
這種方法在有些不能執(zhí)行SCRIPT的機(jī)器上還是用不了,例如MAC上IE4.5之前版本,WIN31上面的IE。
還有某些用戶是關(guān)閉SCRPIT執(zhí)行的。
三、用FLASH來檢測(cè)
如果用戶連SCRPIT都不執(zhí)行的話,就只能用這招了。這也是MM自己用的方法。
做一個(gè)檢測(cè)的HTML,里面放一個(gè)SWF,里面只有一句GetURL("你真正的頁面")
同時(shí)在HTML的<HEAD>里面放<META HTTP-EQUIV="Refresh" CONTENT="10; URL="沒有安裝FLASH的頁面">
如果在10秒之內(nèi)SWF沒有把你帶到真正的頁面,檢測(cè)的HTML就會(huì)把你帶到?jīng)]安裝的頁面
四、最后一個(gè)辦法,讓用戶自己選擇
這也是最常見的了,很多網(wǎng)站都做一個(gè)入口的頁面,下面就有安裝PLUGIN的小ICON
復(fù)制代碼 代碼如下:
<!-- 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腳本,可以檢測(cè)當(dāng)前瀏覽器是否安裝Flash插件以及插件的版本是否滿足要求。
復(fù)制代碼 代碼如下:
<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>
//自己總結(jié)的
//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>
您可能感興趣的文章:
相關(guān)文章
javascript currentTarget對(duì)象介紹
javascript currentTarget對(duì)象介紹...2007-10-10JS實(shí)現(xiàn)同一個(gè)網(wǎng)頁布局滑動(dòng)門和TAB選項(xiàng)卡實(shí)例
這篇文章主要介紹了JS實(shí)現(xiàn)同一個(gè)網(wǎng)頁布局滑動(dòng)門和TAB選項(xiàng)卡效果,通過簡單的自定義切換函數(shù)setTab實(shí)現(xiàn)頁面元素的遍歷及屬性切換的功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09學(xué)習(xí)javascript文件加載優(yōu)化
這篇文章主要為大家詳細(xì)介紹了javascript文件加載優(yōu)化,三種方式實(shí)現(xiàn)js文件加載優(yōu)化,感興趣的小伙伴們可以參考一下2016-02-02phantomjs導(dǎo)出html到pdf的方法總結(jié)
這篇文章主要介紹了phantomjs導(dǎo)出html到pdf的方法總結(jié),需要的朋友可以參考下2017-10-10JavaScript新功能介紹之findLast()和findLastIndex()
最近工作中遇到了一個(gè)關(guān)于查找數(shù)組里面的目標(biāo)元素的方法,所以下面這篇文章主要給大家介紹了關(guān)于JavaScript新功能之findLast()?和findLastIndex()的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04Javascript中的函數(shù)聲明與函數(shù)表達(dá)式(奇技淫巧)
Javascript有很多有趣的用法,在Google Code Search里能找到不少,今天從火丁筆記看到的,非常不錯(cuò),推薦大家看下。2011-03-03