如何用JavaScript判斷用戶端瀏覽器是否安裝了Flash外掛程式,及其版本?

來源:互聯網
上載者:User
<SCRIPT  LANGUAGE="JavaScript">  
<!--  
var  swf  =  new  ActiveXObject('ShockwaveFlash.ShockwaveFlash');  
(swf)  ?  document.writeln('你已經安裝了外掛程式')  :  document.writeln('你沒有安裝外掛程式');  
//  -->  
</SCRIPT>

動態載入.

<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://expert.csdn.net/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 -->

http://bbs.blueidea.com/viewthread.php?tid=234550&page

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.