iriee: animiertes gif in verstecktem div firefox problem

hi,
ich verwende als ladeanzeige ein animiertes gif welches ich in einem div plaziert habe. das div ist über display:none versteckt und wird beim ladevorgang per javascript auf display:block geschalten.
obwohls hier oft probleme mit ie gibt, habe ich das problem dass es im IE funktioniert aber im firefox nicht.
weiss wer rat?

hier der code:
<div id="messagebox" style="display:none;position:absolute; z-index: 9999; top: 150px; left: 150px;">
 <div style="border: 3px solid rgb(160, 214, 38); padding: 5px; width: 200px; background-color: rgb(39, 76, 94); text-align: center;">
  <img src="loading.gif" name="messageboximage" alt="messageboximage" style="padding: 5px; vertical-align: middle;">Die Seite wird geladen.
 </div>
</div>
<script language="JavaScript" type="text/javascript">
<!--
function showmessage(url) {
   document.getElementById('messagebox').style.display = 'block'
   if (typeof url != "undefined") location = url
   document.images["messageboximage"].src=document.images["messageboximage"].src
}
//-->
</script>

  1. Hallo,

    obwohls hier oft probleme mit ie gibt, habe ich das problem dass es im IE funktioniert aber im firefox nicht.

    das ist aufgrund der großzügigeren Fehlerkorrektur des IE oft so.

    <div id="messagebox" style="display:none;position:absolute; z-index: 9999; top: 150px; left: 150px;">

    <div style="border: 3px solid rgb(160, 214, 38); padding: 5px; width: 200px; background-color: rgb(39, 76, 94); text-align: center;">
      <img src="loading.gif" name="messageboximage" alt="messageboximage" style="padding: 5px; vertical-align: middle;">Die Seite wird geladen.
    </div>
    </div>

      
    Das sieht schon mal korrekt aus - mal abgesehen davon, dass dein Codeauszug nicht erklärt, warum du hier zwei div-Elemente verschachtelst, wo eins genügt hätte.  
      
    
    > <script language="JavaScript" type="text/javascript">  
    > <!--  
    > ~~~javascript
    
    function showmessage(url) {  
    
    >    document.getElementById('messagebox').style.display = 'block'  
    >    if (typeof url != "undefined") location = url  
    >    document.images["messageboximage"].src=document.images["messageboximage"].src  
    > }
    
    

    //-->
    </script>

    Hier fallen allerdings mehrere Dinge auf. Bitte tu dir selbst und dem Javascript-Parser den Gefallen und setze konsequent ein Semikolon am Ende einer Anweisung. Das macht den Code auch leichter lesbar: Fehlt das Semikolon, versucht man unwillkürlich immer, die Anweisung mit dem Code der Folgezeile sinnvoll fortzusetzen.

    Dann nehme ich an, als Funktionsparameter url wird eine URL als String übergehen, nicht als location-Objekt. Also muss es in der Zuweisung auch heißen: location.href = url;

    Und die letzte Javascript-Zeile ist absolut nutzlos: Sie weist der src-Eigenschaft des Bildes genau den Wert zu, den sie sowieso schon hatte. Wozu?

    So long,
     Martin

    --
    Theorie ist, wenn jeder weiß, wie's geht, und es geht trotzdem nicht.
    Praxis ist, wenn's geht, und keiner weiß warum.
    Bei uns sind Theorie und Praxis vereint: Nichts geht, und keiner weiß warum.
    1. Hi,

      Dann nehme ich an, als Funktionsparameter url wird eine URL als String übergehen, nicht als location-Objekt. Also muss es in der Zuweisung auch heißen: location.href = url;

      Das location-Objekt ist gar nicht überschreibbar; die Browser interpretieren eine Zuweisung "an" es automatisch als Zuweisung der href-Eigenschaft.

      Und die letzte Javascript-Zeile ist absolut nutzlos: Sie weist der src-Eigenschaft des Bildes genau den Wert zu, den sie sowieso schon hatte. Wozu?

      Vermutlich der Versuch, das animierte GIF wieder "zum laufen" zu bringen. Je nach Browser braucht es solche Kniffe, damit die Animation (wieder) gestartet wird, wenn das GIF zuvor nicht sichtbar war.

      MfG ChrisB

      --
      Light travels faster than sound - that's why most people appear bright until you hear them speak.
      1. danke für die bisherigen tips.

        werde in zukunft vermehrt auf ; achten.

        Vermutlich der Versuch, das animierte GIF wieder "zum laufen" zu bringen. Je nach Browser braucht es solche Kniffe, damit die Animation (wieder) gestartet wird, wenn das GIF zuvor nicht sichtbar war.

        genau das rührt noch von einem meiner unzähligen versuche her das gif wieder zu starten.

        und witzigerweise funktioniert es ja im IE auch nur im FIREFOX und SAFARI nicht.
        noch jemand tips?

        wenn ich das div im firefox per css sichtbar mache, also ohne javascript, einfach den hidden wert per firebug weg nehme, dann bewegt sich das gif.

        1. Hi,

          wenn ich das div im firefox per css sichtbar mache, also ohne javascript, einfach den hidden wert per firebug weg nehme, dann bewegt sich das gif.

          Hier fehlt wohl ein "nicht" - sonst hättest du ja deine Lösung schon.

          genau das rührt noch von einem meiner unzähligen versuche her das gif wieder zu starten.

          und witzigerweise funktioniert es ja im IE auch nur im FIREFOX und SAFARI nicht.
          noch jemand tips?

          Damit, ein komplett neues HTML-img-Objekt zu erzeugen und ins DOM einzuhängen, hatte ich im FireFox 2 glaube ich mal Erfolg.

          MfG ChrisB

          --
          Light travels faster than sound - that's why most people appear bright until you hear them speak.