[收藏]Flash Version Detect Javascript

Mecromedia (Now Adobe) 的Flash Version Detect 脚本.

  1 None.gif //  Flash Player Version Detection - Rev 1.5
  2 None.gif//  Detect Client Browser type
  3 None.gif//  Copyright(c) 2005-2006 Adobe Macromedia Software, LLC. All rights reserved.
  4 None.gif var  isIE   =  (navigator.appVersion.indexOf( " MSIE " !=   - 1 ?   true  :  false ;
  5 None.gif var  isWin  =  (navigator.appVersion.toLowerCase().indexOf( " win " !=   - 1 ?   true  :  false ;
  6 None.gif var  isOpera  =  (navigator.userAgent.indexOf( " Opera " !=   - 1 ?   true  :  false ;
  7 None.gif
  8 None.gif function  ControlVersion()
  9 ExpandedBlockStart.gifContractedBlock.gif dot.gif {
 10InBlock.gif    var version;
 11InBlock.gif    var axo;
 12InBlock.gif    var e;
 13InBlock.gif
 14InBlock.gif    // NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry
 15InBlock.gif
 16ExpandedSubBlockStart.gifContractedSubBlock.gif    try dot.gif{
 17InBlock.gif        // version will be set for 7.X or greater players
 18InBlock.gif        axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
 19InBlock.gif        version = axo.GetVariable("$version");
 20ExpandedSubBlockStart.gifContractedSubBlock.gif    }
 catch (e) dot.gif{
 21ExpandedSubBlockEnd.gif    }

 22InBlock.gif
 23InBlock.gif    if (!version)
 24ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
 25ExpandedSubBlockStart.gifContractedSubBlock.gif        try dot.gif{
 26InBlock.gif            // version will be set for 6.X players only
 27InBlock.gif            axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
 28InBlock.gif            
 29InBlock.gif            // installed player is some revision of 6.0
 30InBlock.gif            // GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
 31InBlock.gif            // so we have to be careful. 
 32InBlock.gif            
 33InBlock.gif            // default to the first public version
 34InBlock.gif            version = "WIN 6,0,21,0";
 35InBlock.gif
 36InBlock.gif            // throws if AllowScripAccess does not exist (introduced in 6.0r47)        
 37InBlock.gif            axo.AllowScriptAccess = "always";
 38InBlock.gif
 39InBlock.gif            // safe to call for 6.0r47 or greater
 40InBlock.gif            version = axo.GetVariable("$version");
 41InBlock.gif
 42ExpandedSubBlockStart.gifContractedSubBlock.gif        }
 catch (e) dot.gif{
 43ExpandedSubBlockEnd.gif        }

 44ExpandedSubBlockEnd.gif    }

 45InBlock.gif
 46InBlock.gif    if (!version)
 47ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
 48ExpandedSubBlockStart.gifContractedSubBlock.gif        try dot.gif{
 49InBlock.gif            // version will be set for 4.X or 5.X player
 50InBlock.gif            axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
 51InBlock.gif            version = axo.GetVariable("$version");
 52ExpandedSubBlockStart.gifContractedSubBlock.gif        }
 catch (e) dot.gif{
 53ExpandedSubBlockEnd.gif        }

 54ExpandedSubBlockEnd.gif    }

 55InBlock.gif
 56InBlock.gif    if (!version)
 57ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
 58ExpandedSubBlockStart.gifContractedSubBlock.gif        try dot.gif{
 59InBlock.gif            // version will be set for 3.X player
 60InBlock.gif            axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
 61InBlock.gif            version = "WIN 3,0,18,0";
 62ExpandedSubBlockStart.gifContractedSubBlock.gif        }
 catch (e) dot.gif{
 63ExpandedSubBlockEnd.gif        }

 64ExpandedSubBlockEnd.gif    }

 65InBlock.gif
 66InBlock.gif    if (!version)
 67ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
 68ExpandedSubBlockStart.gifContractedSubBlock.gif        try dot.gif{
 69InBlock.gif            // version will be set for 2.X player
 70InBlock.gif            axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
 71InBlock.gif            version = "WIN 2,0,0,11";
 72ExpandedSubBlockStart.gifContractedSubBlock.gif        }
 catch (e) dot.gif{
 73InBlock.gif            version = -1;
 74ExpandedSubBlockEnd.gif        }

 75ExpandedSubBlockEnd.gif    }

 76InBlock.gif    
 77InBlock.gif    return version;
 78ExpandedBlockEnd.gif}

 79 None.gif
 80 None.gif //  JavaScript helper required to detect Flash Player PlugIn version information
 81 ExpandedBlockStart.gifContractedBlock.gif function  GetSwfVer() dot.gif {
 82InBlock.gif    // NS/Opera version >= 3 check for Flash plugin in plugin array
 83InBlock.gif    var flashVer = -1;
 84InBlock.gif    
 85ExpandedSubBlockStart.gifContractedSubBlock.gif    if (navigator.plugins != null && navigator.plugins.length > 0dot.gif{
 86ExpandedSubBlockStart.gifContractedSubBlock.gif        if (navigator.plugins["Shockwave Flash 2.0"|| navigator.plugins["Shockwave Flash"]) dot.gif{
 87InBlock.gif            var swVer2 = navigator.plugins["Shockwave Flash 2.0"? " 2.0" : "";
 88InBlock.gif            var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;            
 89InBlock.gif            var descArray = flashDescription.split(" ");
 90InBlock.gif            var tempArrayMajor = descArray[2].split(".");
 91InBlock.gif            var versionMajor = tempArrayMajor[0];
 92InBlock.gif            var versionMinor = tempArrayMajor[1];
 93ExpandedSubBlockStart.gifContractedSubBlock.gif            if ( descArray[3!= "" ) dot.gif{
 94InBlock.gif                tempArrayMinor = descArray[3].split("r");
 95ExpandedSubBlockStart.gifContractedSubBlock.gif            }
 else dot.gif{
 96InBlock.gif                tempArrayMinor = descArray[4].split("r");
 97ExpandedSubBlockEnd.gif            }

 98InBlock.gif            var versionRevision = tempArrayMinor[1> 0 ? tempArrayMinor[1] : 0;
 99InBlock.gif            var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
100ExpandedSubBlockEnd.gif        }

101ExpandedSubBlockEnd.gif    }

102InBlock.gif    // MSN/WebTV 2.6 supports Flash 4
103InBlock.gif    else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6"!= -1) flashVer = 4;
104InBlock.gif    // WebTV 2.5 supports Flash 3
105InBlock.gif    else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5"!= -1) flashVer = 3;
106InBlock.gif    // older WebTV supports Flash 2
107InBlock.gif    else if (navigator.userAgent.toLowerCase().indexOf("webtv"!= -1) flashVer = 2;
108ExpandedSubBlockStart.gifContractedSubBlock.gif    else if ( isIE && isWin && !isOpera ) dot.gif{
109InBlock.gif        flashVer = ControlVersion();
110ExpandedSubBlockEnd.gif    }
    
111InBlock.gif    return flashVer;
112ExpandedBlockEnd.gif}

113 None.gif
114 None.gif //  When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
115 None.gif function  DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)
116 ExpandedBlockStart.gifContractedBlock.gif dot.gif {
117InBlock.gif    versionStr = GetSwfVer();
118ExpandedSubBlockStart.gifContractedSubBlock.gif    if (versionStr == -1 ) dot.gif{
119InBlock.gif        return false;
120ExpandedSubBlockStart.gifContractedSubBlock.gif    }
 else if (versionStr != 0dot.gif{
121ExpandedSubBlockStart.gifContractedSubBlock.gif        if(isIE && isWin && !isOpera) dot.gif{
122InBlock.gif            // Given "WIN 2,0,0,11"
123InBlock.gif            tempArray         = versionStr.split(" ");     // ["WIN", "2,0,0,11"]
124InBlock.gif            tempString        = tempArray[1];            // "2,0,0,11"
125InBlock.gif            versionArray      = tempString.split(",");    // ['2', '0', '0', '11']
126ExpandedSubBlockStart.gifContractedSubBlock.gif        }
 else dot.gif{
127InBlock.gif            versionArray      = versionStr.split(".");
128ExpandedSubBlockEnd.gif        }

129InBlock.gif        var versionMajor      = versionArray[0];
130InBlock.gif        var versionMinor      = versionArray[1];
131InBlock.gif        var versionRevision   = versionArray[2];
132InBlock.gif
133InBlock.gif            // is the major.revision >= requested major.revision AND the minor version >= requested minor
134ExpandedSubBlockStart.gifContractedSubBlock.gif        if (versionMajor > parseFloat(reqMajorVer)) dot.gif{
135InBlock.gif            return true;
136ExpandedSubBlockStart.gifContractedSubBlock.gif        }
 else if (versionMajor == parseFloat(reqMajorVer)) dot.gif{
137InBlock.gif            if (versionMinor > parseFloat(reqMinorVer))
138InBlock.gif                return true;
139ExpandedSubBlockStart.gifContractedSubBlock.gif            else if (versionMinor == parseFloat(reqMinorVer)) dot.gif{
140InBlock.gif                if (versionRevision >= parseFloat(reqRevision))
141InBlock.gif                    return true;
142ExpandedSubBlockEnd.gif            }

143ExpandedSubBlockEnd.gif        }

144InBlock.gif        return false;
145ExpandedSubBlockEnd.gif    }

146ExpandedBlockEnd.gif}

147 None.gif
148 None.gif function  AC_AddExtension(src, ext)
149 ExpandedBlockStart.gifContractedBlock.gif dot.gif {
150InBlock.gif  if (src.indexOf('?') != -1)
151InBlock.gif    return src.replace(/\?/, ext+'?'); 
152InBlock.gif  else
153InBlock.gif    return src + ext;
154ExpandedBlockEnd.gif}

155 None.gif
156 None.gif function  AC_Generateobj(objAttrs, params, embedAttrs) 
157 ExpandedBlockStart.gifContractedBlock.gif dot.gif
158InBlock.gif    var str = '';
159InBlock.gif    if (isIE && isWin && !isOpera)
160ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
161InBlock.gif          str += '<object ';
162InBlock.gif          for (var i in objAttrs)
163InBlock.gif              str += i + '="' + objAttrs[i] + '" ';
164InBlock.gif          for (var i in params)
165InBlock.gif              str += '><param name="' + i + '" value="' + params[i] + '" /> ';
166InBlock.gif          str += '></object>';
167ExpandedSubBlockStart.gifContractedSubBlock.gif    }
 else dot.gif{
168InBlock.gif          str += '<embed ';
169InBlock.gif          for (var i in embedAttrs)
170InBlock.gif              str += i + '="' + embedAttrs[i] + '" ';
171InBlock.gif          str += '> </embed>';
172ExpandedSubBlockEnd.gif    }

173InBlock.gif
174InBlock.gif    document.write(str);
175ExpandedBlockEnd.gif}

176 None.gif
177 ExpandedBlockStart.gifContractedBlock.gif function  AC_FL_RunContent() dot.gif {
178InBlock.gif  var ret = 
179InBlock.gif    AC_GetArgs
180InBlock.gif    (  arguments, ".swf""movie""clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
181InBlock.gif     , "application/x-shockwave-flash"
182InBlock.gif    );
183InBlock.gif  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
184ExpandedBlockEnd.gif}

185 None.gif
186 ExpandedBlockStart.gifContractedBlock.gif function  AC_GetArgs(args, ext, srcParamName, classid, mimeType) dot.gif {
187InBlock.gif  var ret = new Object();
188InBlock.gif  ret.embedAttrs = new Object();
189InBlock.gif  ret.params = new Object();
190InBlock.gif  ret.objAttrs = new Object();
191ExpandedSubBlockStart.gifContractedSubBlock.gif  for (var i=0; i < args.length; i=i+2)dot.gif{
192InBlock.gif    var currArg = args[i].toLowerCase();    
193InBlock.gif
194ExpandedSubBlockStart.gifContractedSubBlock.gif    switch (currArg)dot.gif{    
195InBlock.gif      case "classid":
196InBlock.gif        break;
197InBlock.gif      case "pluginspage":
198InBlock.gif        ret.embedAttrs[args[i]] = args[i+1];
199InBlock.gif        break;
200InBlock.gif      case "src":
201InBlock.gif      case "movie":    
202InBlock.gif        args[i+1= AC_AddExtension(args[i+1], ext);
203InBlock.gif        ret.embedAttrs["src"= args[i+1];
204InBlock.gif        ret.params[srcParamName] = args[i+1];
205InBlock.gif        break;
206InBlock.gif      case "onafterupdate":
207InBlock.gif      case "onbeforeupdate":
208InBlock.gif      case "onblur":
209InBlock.gif      case "oncellchange":
210InBlock.gif      case "onclick":
211InBlock.gif      case "ondblClick":
212InBlock.gif      case "ondrag":
213InBlock.gif      case "ondragend":
214InBlock.gif      case "ondragenter":
215InBlock.gif      case "ondragleave":
216InBlock.gif      case "ondragover":
217InBlock.gif      case "ondrop":
218InBlock.gif      case "onfinish":
219InBlock.gif      case "onfocus":
220InBlock.gif      case "onhelp":
221InBlock.gif      case "onmousedown":
222InBlock.gif      case "onmouseup":
223InBlock.gif      case "onmouseover":
224InBlock.gif      case "onmousemove":
225InBlock.gif      case "onmouseout":
226InBlock.gif      case "onkeypress":
227InBlock.gif      case "onkeydown":
228InBlock.gif      case "onkeyup":
229InBlock.gif      case "onload":
230InBlock.gif      case "onlosecapture":
231InBlock.gif      case "onpropertychange":
232InBlock.gif      case "onreadystatechange":
233InBlock.gif      case "onrowsdelete":
234InBlock.gif      case "onrowenter":
235InBlock.gif      case "onrowexit":
236InBlock.gif      case "onrowsinserted":
237InBlock.gif      case "onstart":
238InBlock.gif      case "onscroll":
239InBlock.gif      case "onbeforeeditfocus":
240InBlock.gif      case "onactivate":
241InBlock.gif      case "onbeforedeactivate":
242InBlock.gif      case "ondeactivate":
243InBlock.gif      case "type":
244InBlock.gif      case "codebase":
245InBlock.gif      case "id":
246InBlock.gif        ret.objAttrs[args[i]] = args[i+1];
247InBlock.gif        break;
248InBlock.gif      case "width":
249InBlock.gif      case "height":
250InBlock.gif      case "align":
251InBlock.gif      case "vspace"
252InBlock.gif      case "hspace":
253InBlock.gif      case "class":
254InBlock.gif      case "title":
255InBlock.gif      case "accesskey":
256InBlock.gif      case "name":
257InBlock.gif      case "tabindex":
258InBlock.gif        ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
259InBlock.gif        break;
260InBlock.gif      default:
261InBlock.gif        ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
262ExpandedSubBlockEnd.gif    }

263ExpandedSubBlockEnd.gif  }

264InBlock.gif  ret.objAttrs["classid"= classid;
265InBlock.gif  if (mimeType) ret.embedAttrs["type"= mimeType;
266InBlock.gif  return ret;
267ExpandedBlockEnd.gif}



 

转载于:https://www.cnblogs.com/zl3143/articles/554304.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值