sehen alle sehr schick aus und ermöglichen eine Vielzahl an Spielereien
und Effekten. Bedenken Sie aber immer die Größe der Dateien, kein Benutzer hat Lust sich einen
Ladebildschirm an zu schauen, der 2Min seiner Zeit raubt. Dazu kommt noch die Startzeit des
Plugins bzw. des Interpreters (Java). Im Schnitt wartet ein Benutzer max. 30sec. Bis eine Seite
aufgebaut ist, alles was darüber liegt ist deutlich zu lang. Testen Sie deshalb auch die Ladezeiten ihrer Seite mit
einem Modem. Da nicht jeder noch ein altes Modem zu hause rumfliegen hat, gibt es dafür natürlich auch wieder einen
Dienst. Er überprüft Ihre Webseite und gibt
die unterschiedlichen Ladedauern für die jeweiligen Verbindungen aus. Haken an der Sache ist, ein Flash-Objekt,
dass über ein externes Script aufgerufen wird, wird nicht in die Ladezeit mit eingerechnet,
die Ladezeit sollten Sie dann über den direkten Link zum Flash-Objekt ermitteln.
Das zweite Problem ist, dass der Besucher Ihrer Seite diese Programme oder Plugins installiert haben muss,
ob er diese nur installiert um ihr Menü zu sehen ist fraglich. Bei Apple auf dem IPhone und dem IPad sind z.B.
keine Flashplugins installiert und können über den normalen Weg nicht nachinstalliert werden.
Und noch ein Problem, Suchmaschinen können mit
Flash und Java-Script nichts anfangen, alles was in einem Flash-Objekt eingebunden wurde lässt die Suchmaschine total kalt.
Abhilfe schafft hier ein alternativer Inhalt, hierzu siehe weiter unten.
Da Flash meist mit einem Java-Script aufgerufen wird gilt dieser Abschnitt auch teilweise für
Java-Script-Teile Ihrer Homepage.
Ein eingebundenes Flash-Objekt könnte folgendes Script haben (zur besseren Ansicht in mehrere Teile aufgeteilt:
Folgende Zeilen müssen im Header stehen:
Teil 1:
<script language="javascript" type="text/javascript"> <!-- // -------------------------------------------------------------- // Globale Variablen // Erforderliche Hauptversion von Flash var requiredMajorVersion = 8; // Erforderliche Unterversion von Flash var requiredMinorVersion = 0; // Erforderliche Flash-Revision var requiredRevision = 0; // Die unterstuetzte JavaScript-Version var jsVersion = 1.0; // -------------------------------------------------------------- // --> </script>
Teil 2:
<script language="VBScript" type="text/vbscript"> <!-- // Visual Basic-Hilfsprogramm ist zur Ermittlung // der Versionsinformationen des // Flash Player ActiveX-Steuerelements erforderlich Function VBGetSwfVer(i) on error resume next Dim swControl, swVersion swVersion = 0 set swControl = CreateObject("ShockwaveFlash.ShockwaveFlash." + CStr(i)) if (IsObject(swControl)) then swVersion = swControl.GetVariable("$version") end if VBGetSwfVer = swVersion End Function // --> </script>
Teil 3.1:
<script language="javascript1.1" type="text/javascript"> </script> <!-- // Client-Browsertyp ermitteln 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; jsVersion = 1.1; // JavaScript-Hilfsprogramm ist zur Ermittlung der Versionsinformationen // des Flash Player Plug-Ins erforderlich function JSGetSwfVer(i){ // NS/Opera-Version >= 3 auf Flash-Plug-In im Plug-In-Array pruefen 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; descArray = flashDescription.split(" "); tempArrayMajor = descArray[2].split("."); versionMajor = tempArrayMajor[0]; versionMinor = tempArrayMajor[1]; if ( descArray[3] != "" ) { tempArrayMinor = descArray[3].split("r"); } else { tempArrayMinor = descArray[4].split("r"); } versionRevision = tempArrayMinor[1] > 0 ? tempArrayMinor[1] : 0; flashVer = versionMajor + "." + versionMinor + "." + versionRevision; } else { flashVer = -1; } } // MSN/WebTV 2.6 unterstuetzt Flash 4 else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4; // WebTV 2.5 unterstuetzt Flash 3 else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3; // aelteres WebTV unterstuetzt Flash 2 else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2; // Ermittlung in allen anderen Faellen nicht moeglich else { flashVer = -1; } return flashVer; }
Teil 3.2:
// Wenn der Funktionsaufruf ohne Parameter erfolgt, // gibt diese Funktion einen Gleitkommawert zurueck, // bei dem es sich entweder um die Flash Player-Version oder um 0.0 handelt. // Beispiel: Flash Player 7r14 gibt 7.14 zurueck. // Wenn reqMinorVer, reqMajorVer, reqRevision aufgerufen wird, // wird 'true' zurueckgegeben, // sofern diese bzw. eine hoehere Version verfuegbar ist function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision) { reqVer = parseFloat(reqMajorVer + "." + reqRevision); // Versionen rueckwaerts durchlaufen, bis die neueste Version gefunden wird for (i=25;i>0;i--) { if (isIE && isWin && !isOpera) { versionStr = VBGetSwfVer(i); } else { versionStr = JSGetSwfVer(i); } if (versionStr == -1 ) { return false; } else if (versionStr != 0) { if(isIE && isWin && !isOpera) { tempArray = versionStr.split(" "); tempString = tempArray[1]; versionArray = tempString .split(","); } else { versionArray = versionStr.split("."); } versionMajor = versionArray[0]; versionMinor = versionArray[1]; versionRevision = versionArray[2]; versionString = versionMajor + "." + versionRevision; // 7.0r24 == 7.24 wie oben beschrieben versionNum = parseFloat(versionString); // ist die Hauptrevision >= angeforderte Hauptrevision UND die Nebenversion >= angeforderte Nebenversion if ( (versionMajor > reqMajorVer) && (versionNum >= reqVer) ) { return true; } else { return ((versionNum >= reqVer && versionMinor >= reqMinorVer) ? true : false ); } } } return (reqVer ? false : 0.0); } // -->
Da dieser Teil besonders groß ist, bietet es sich an, diese Scripte in seperate Dateien auszulagern, weiterer Vorteil ist dabei, dass diese externen Dateien nur einmal vom Benutzer geladen werden müssen, und nicht bei jedem Seitenaufruf, was die Ladezeiten bei wiederholten Besuchen bzw. weiteren Seiten wesentlich verkürzen kann. Dann würden die Zeilen nur im <head>-Tag nur noch so aussehen:
<script language="javascript" type="text/javascript" src="Script1.js"> </script> <script language="VBScript" type="text/vbscript"> <!-- // Visual Basic-Hilfsprogramm ist zur Ermittlung //der Versionsinformationen des Flash Player ActiveX-Steuerelements erforderlich Function VBGetSwfVer(i) on error resume next Dim swControl, swVersion swVersion = 0 set swControl = CreateObject("ShockwaveFlash.ShockwaveFlash." + CStr(i)) if (IsObject(swControl)) then swVersion = swControl.GetVariable("$version") end if VBGetSwfVer = swVersion End Function // --> </script> <script language="javascript1.1" type="text/javascript" src="script2.js"> </script>
Um jetzt Werte zu ändern brauchen Sie nur noch die .js-Dateien öffnen und editieren. Beschreibungen finden sie direkt im Script gekennzeichnet mit den // Zeichen.
So bis jetzt haben wir also die Version ermittelt, und mit unserer Vorgabe abgeglichen, jetzt brauchen wir noch das Objekt, das wir anzeigen wollen, bzw. den alternativen Inhalt zum Flash-Objekt. Auch hier bietet sich eine Auslagerung in eine externe Datei an, hier ist es flash1.js. Und so sieht der Auszug aus dem Quelltext der HTML Datei aus:
<script language="javascript" type="text/javascript" src="flash1.js"> </script> <noscript> <img src="Bild" width="416" height="312" border="0" alt="Bild"> </noscript>
Ab dem <noscript> fängt der alternative Inhalt an, wenn kein Java-Script unterstützt wird, die Flashversion braucht deswegen erst gar nicht abgefragt werden.
Der Inhalt der Datei flash1.js sieht dann folgender maßen aus Kommentare wieder hinter //:
<!-- var hasRightVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision); if(hasRightVersion) { // sofern eine akzeptable Version ermittelt wurde var oeTags = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' + 'width="416" height="312"' //hier die Breite und Hoehe aendern + 'codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab">' //Flashfilm.swf in den richtigen Dateinamen abaendern. + '<param name="movie" value="Flashfilm.swf" /><param name="menu" value="false" /><param name="quality" value="high" /><param name="bgcolor" value="high" /><PARAM NAME=wmode VALUE=transparent />' // Hintergrund ist transparent. Flashfilm.swf in den richtigen Dateinamen abaendern. + '<embed src="Flashfilm.swf" menu="false" wmode="transparent" quality="high" wmode="transparent" ' + 'width="416" height="312" name="Index" align="middle"' //gleiche Werte wie oben eintragen + 'play="true"' + 'loop="false"' + 'quality="high"' + 'allowScriptAccess="sameDomain"' + 'type="application/x-shockwave-flash"' + 'pluginspage="http://www.macromedia.com/go/getflashplayer">' + '<\/embed>' + '<\/object>'; document.write(oeTags); // Flash-Film einbetten } else { // Flash ist veraltet, oder das Plug-In wurde nicht ermittelt var alternateContent = '<img src="Bild.JPG" width="416" height="312" border="0" alt="Bild">'; document.write(alternateContent); // Flash ist zu alt, alternativer Inhalt } // -->
Jetzt kann auch der Benutzer, der kein Flash hat unsere Seite ganz normal besuchen, ohne vorher ein Plugin herunterladen zu müssen Weitere Vorteil ist, dass jetzt jede Suchmaschine unseren alternativen Inhalt angezeigt bekommt, bei entsprechendem Text kann das z.B. für ein besseres Ranking bei den Suchmaschinen sorgen.