Abfrage-Script
Vira
- javascript
Bitte dringend um Hilfe! Ich kenne mich leider überhaupt nicht mit Programmiersprachen aus und brauche nun für eine Website eine Plugin-Abfrage. Und zwar soll geprüft werden, ob der User den Flashplayer 8 oder höher hat und dann entweder auf die HTML-Seite A oder B verwiesen werden. Nun habe ich ein tolles Script gefunden, dass in JavaScript wunderbar alles abfragt. Falls der Flashplayer 8 vorhanden ist, wird die SWF-Datei gestartet und falls nicht, erscheint ein Text. Ich möchte aber, wie gesagt, dass dann jeweils automatisch auf eine HTML-Seite gewechselt wird und nicht, dass etwas angezeigt wird.
Wie kann ich das im Script eingeben? Kann mir da vielleicht jemand helfen?
Jede Hilfe wäre toll! Vielen Dank im Voraus...
L.G. Vira
Hier das JS:
// Flash Player Version Detection - Rev 1.5 // Detect Client Browser type // Copyright(c) 2005-2006 Adobe Macromedia Software, LLC. All rights reserved. var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false; var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false; var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;
function ControlVersion() { var version; var axo; var e;
// NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry
try { // version will be set for 7.X or greater players axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"); version = axo.GetVariable("$version"); } catch (e) { }
if (!version) { try { // version will be set for 6.X players only axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
// installed player is some revision of 6.0 // GetVariable("$version") crashes for versions 6.0.22 through 6.0.29, // so we have to be careful.
// default to the first public version version = "WIN 6,0,21,0";
// throws if AllowScripAccess does not exist (introduced in 6.0r47) axo.AllowScriptAccess = "always";
// safe to call for 6.0r47 or greater version = axo.GetVariable("$version");
} catch (e) { } }
if (!version) { try { // version will be set for 4.X or 5.X player axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3"); version = axo.GetVariable("$version"); } catch (e) { } }
if (!version) { try { // version will be set for 3.X player axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3"); version = "WIN 3,0,18,0"; } catch (e) { } }
if (!version) { try { // version will be set for 2.X player axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); version = "WIN 2,0,0,11"; } catch (e) { version = -1; } }
return version; }
// JavaScript helper required to detect Flash Player PlugIn version information function GetSwfVer(){ // NS/Opera version >= 3 check for Flash plugin in plugin array var flashVer = -1;
if (navigator.plugins != null && navigator.plugins.length > 0) { if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) { var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : ""; var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description; var descArray = flashDescription.split(" "); var tempArrayMajor = descArray[2].split("."); var versionMajor = tempArrayMajor[0]; var versionMinor = tempArrayMajor[1]; if ( descArray[3] != "" ) { tempArrayMinor = descArray[3].split("r"); } else { tempArrayMinor = descArray[4].split("r"); } var versionRevision = tempArrayMinor[1] > 0 ? tempArrayMinor[1] : 0; var flashVer = versionMajor + "." + versionMinor + "." + versionRevision; } } // MSN/WebTV 2.6 supports Flash 4 else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4; // WebTV 2.5 supports Flash 3 else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3; // older WebTV supports Flash 2 else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2; else if ( isIE && isWin && !isOpera ) { flashVer = ControlVersion(); } return flashVer; }
// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision) { versionStr = GetSwfVer(); if (versionStr == -1 ) { return false; } else if (versionStr != 0) { if(isIE && isWin && !isOpera) { // Given "WIN 2,0,0,11" tempArray = versionStr.split(" "); // ["WIN", "2,0,0,11"] tempString = tempArray[1]; // "2,0,0,11" versionArray = tempString.split(","); // ['2', '0', '0', '11'] } else { versionArray = versionStr.split("."); } var versionMajor = versionArray[0]; var versionMinor = versionArray[1]; var versionRevision = versionArray[2];
// is the major.revision >= requested major.revision AND the minor version >= requested minor if (versionMajor > parseFloat(reqMajorVer)) { return true; } else if (versionMajor == parseFloat(reqMajorVer)) { if (versionMinor > parseFloat(reqMinorVer)) return true; else if (versionMinor == parseFloat(reqMinorVer)) { if (versionRevision >= parseFloat(reqRevision)) return true; } } return false; } }
function AC_AddExtension(src, ext) { if (src.indexOf('?') != -1) return src.replace(/?/, ext+'?'); else return src + ext; }
function AC_Generateobj(objAttrs, params, embedAttrs) { var str = ''; if (isIE && isWin && !isOpera) { str += '<object '; for (var i in objAttrs) str += i + '="' + objAttrs[i] + '" '; for (var i in params) str += '><param name="' + i + '" value="' + params[i] + '" /> '; str += '></object>'; } else { str += '<embed '; for (var i in embedAttrs) str += i + '="' + embedAttrs[i] + '" '; str += '> </embed>'; }
document.write(str); }
function AC_FL_RunContent(){ var ret = AC_GetArgs ( arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" , "application/x-shockwave-flash" ); AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs); }
function AC_GetArgs(args, ext, srcParamName, classid, mimeType){ var ret = new Object(); ret.embedAttrs = new Object(); ret.params = new Object(); ret.objAttrs = new Object(); for (var i=0; i < args.length; i=i+2){ var currArg = args[i].toLowerCase();
switch (currArg){ case "classid": break; case "pluginspage": ret.embedAttrs[args[i]] = args[i+1]; break; case "src": case "movie": args[i+1] = AC_AddExtension(args[i+1], ext); ret.embedAttrs["src"] = args[i+1]; ret.params[srcParamName] = args[i+1]; break; case "onafterupdate": case "onbeforeupdate": case "onblur": case "oncellchange": case "onclick": case "ondblClick": case "ondrag": case "ondragend": case "ondragenter": case "ondragleave": case "ondragover": case "ondrop": case "onfinish": case "onfocus": case "onhelp": case "onmousedown": case "onmouseup": case "onmouseover": case "onmousemove": case "onmouseout": case "onkeypress": case "onkeydown": case "onkeyup": case "onload": case "onlosecapture": case "onpropertychange": case "onreadystatechange": case "onrowsdelete": case "onrowenter": case "onrowexit": case "onrowsinserted": case "onstart": case "onscroll": case "onbeforeeditfocus": case "onactivate": case "onbeforedeactivate": case "ondeactivate": case "type": case "codebase": case "id": ret.objAttrs[args[i]] = args[i+1]; break; case "width": case "height": case "align": case "vspace": case "hspace": case "class": case "title": case "accesskey": case "name": case "tabindex": ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1]; break; default: ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1]; } } ret.objAttrs["classid"] = classid; if (mimeType) ret.embedAttrs["type"] = mimeType; return ret; }
Und hier der HTML-Seiten-Code:
<!-- saved from url=(0013)about:internet --> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Client Detection Example</title> <script src="AC_OETags.js" language="javascript"></script> <script language="JavaScript" type="text/javascript"> <!-- // ----------------------------------------------------------------------------- // Globals // Major version of Flash required var requiredMajorVersion = 8; // Minor version of Flash required var requiredMinorVersion = 0; // Minor version of Flash required var requiredRevision = 0; // ----------------------------------------------------------------------------- // --> </script> </head>
<body> <script language="JavaScript" type="text/javascript"> <!-- // Version check based upon the values entered above in "Globals" var hasReqestedVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
// Check to see if the version meets the requirements for playback if (hasReqestedVersion) { // if we've detected an acceptable version // embed the Flash Content SWF when all tests are passed AC_FL_RunContent( "src", "example", "width", "550", "height", "200", "align", "middle", "id", "detectionExample", "quality", "high", "bgcolor", "#FFFFFF", "name", "detectionExample", "allowScriptAccess","sameDomain", "type", "application/x-shockwave-flash", 'codebase', 'http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab', "pluginspage", "http://www.adobe.com/go/getflashplayer" ); } else { // flash is too old or we can't detect the plugin var alternateContent = 'getURL("test2.html")'; document.write(alternateContent); // insert non-flash content } // --> </script> <noscript> Provide alternate content for browsers that do not support scripting or for those that have scripting disabled. Alternate HTML content should be placed here. This content requires the Adobe Flash Player and a browser with JavaScript enabled. <a href="http://www.adobe.com/go/getflash/">Get Flash</a> </noscript> </body> </html>
Hallo,
Und zwar soll geprüft werden, ob der User den Flashplayer 8 oder höher hat und dann entweder auf die HTML-Seite A oder B verwiesen werden.
Wie kann ich das im Script eingeben?
Ich möchte mich nicht durch diesen unübersichtlichen und offenbar aufgeblähten Code von Adobe wühlen, ich kann dir einfachere Scripte empfehlen, die einfach zurückliefern, ob Flash und in welcher Version es installiert ist:
http://www.quirksmode.org/js/flash.html
http://www.skyzyx.com/scripts/flash.php
Dann kannst du entsprechend mit location.href automatisch weiterleiten.
Allgemein wäre es aber sinnvoller, direkt die Seite ohne Flash zu zeigen und dann, sofern Flash installiert ist, auf die Flash-Seite weiterzuleiten. So können Suchmaschinen die Flash-freie Seite finden und deren Informationen indizieren.
Mathias