Flash Java und Andere...

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.

nach oben ↑


Lösungen für Java- und Flash-Objekte

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.



letzte Änderung: 22.09.2011

Impressum HTML-Validator CSS-Validator Schattenland Webdesign unten.png