julis: immer noch AniGifs....

also immerhin weiß ich heute schon mal mehr. Also ic möchte gerne auf onClick ein AnimGif neu laden, dass dei Animation auch von vorne starte. Aber, der NN läd das bild ja vor, daher: keine Animation! wie kann ich den austricksen?

  1. also immerhin weiß ich heute schon mal mehr. Also ic möchte gerne auf onClick ein AnimGif neu laden, dass dei Animation auch von vorne starte. Aber, der NN läd das bild ja vor, daher: keine Animation! wie kann ich den austricksen?

    Bitte führe die Diskussion im alten Thread weiter. Gerade bei der
    momentan beschränkten Anzahl von Threads innerhalb der Forumhaupt-
    datei ist es sehr ärgerlich, wenn jemand täglich neu beginnt, nur
    weil er/sie einen Schritt weitergekommen ist. Die meisten Forums-
    teilnehmer scrollen ohnehin die ganze Seite durch, so dass nix
    verlorengeht ;)

    <?m=123409&t=23720>

  2. gruss julis;

    ... der NN läd das bild ja vor, daher: keine Animation! wie kann ich den austricksen?

    ich hab mal rumprobiert und komme zu dem schluss, dass dich der
    netscape so richtig im stich laesst - nimm Dir mal das beispiel-
    script vor, welches ich noch mit dranhaenge und probier mal rum;

    * die 4er versionen von netscape (auf PC) verweigern den eigentlich
      faelligen "onload"-event;
    * fuer den 6er(PC) funktioniert der im script eingebaute "reload-trick"
      (schau Dir das mal an)
    * der gute alte Netscape 3.0 Gold(PC) liefert in diesem beispiel bei
      jedem neuen sequenzdurchlauf des animierten gifs (4 ebenen) gleich
      4 "onload"-events  -  fuer jede ebene des animierten gifs einen;

    * der msie liefert bei jedem neuen sequenzdurchlauf genau einen
      "onload"-event; (aber das ist fuer Dein problem irrelevant)

    -------------------------

    • Dein problem koenntest Du loesen, indem Du das animierte gif, in
        einen layer packst und dessen ".document."-inhalt bei jedem click
        auf den button neu schreibst - hier mal die noetigen anweisungen:

    yourLayer = new Layer(1);
      yourLayer.visibility == "hide";
      yourLayer.left = [absoluter wert in px];
      yourLayer.top  = [absoluter wert in px];
      yourLayer.width = [z.b.: breite Deines bildes in px];
      yourLayer.height = [z.b.: hoehe Deines bildes in px];
      yourLayer.bgColor = self.document.bgColor;
      yourLayer.document.open();
      yourLayer.document.write('<img src="???.gif" width="??" height="??" alt="" border="0">');
      yourLayer.document.close();
      yourLayer.visibility = "show";

    • eine weitere moeglichkeit erschliesst sich, wenn Du mit [frame]s
        oder fenstern arbeiten kannst  -  dann schreib den documentencode
        Deines animierten gifs dynamisch in einen [frame] / ein fenster;

    -------------------------

    hier der code zum rumprobieren:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>

    <head>
    <title>imgReload.html</title>
    <script language="JavaScript" type="text/javascript">
    <!--
    var anigifSrc = "http://a145.g.akamai.net/f/145/3220/1d/www.atptennis.com/en/images/other/atpspecial.gif";
    var blankSrc = "http://a145.g.akamai.net/f/145/3220/1d/www.atptennis.com/en/graphics/space.gif";

    //if ((self.document.all) || (self.getDocumentById)) {var yourImage = new Image(120,160);yourImage.src = anigifSrc;}
    if (self.document.all) {var yourImage = new Image(120,160);yourImage.src = anigifSrc;}

    function checkSource()
     {//if ((self.document.all) || (self.document.getElementById))
      if (self.document.all)
      {return;}
      if (self.document.images['yourAniGif'].src == anigifSrc)
      {return;}
      if (self.document.images['yourAniGif'].src == blankSrc)
      {self.document.images['yourAniGif'].src = anigifSrc;}
     }
    function reloadImageSource()
     {//if ((self.document.all) || (self.document.getElementById)) {self.document.images['yourAniGif'].src = self.yourImage.src;return;}
      if (self.document.all) {self.document.images['yourAniGif'].src = self.yourImage.src;return;}
      self.document.images['yourAniGif'].src = blankSrc;
      setTimeout("self.checkSource()",500);
     }
    //-->
    </script>
    </head>

    <body>
    <table cols="1" rows="1" width="100%" height="100%" colspan="0" rowspan="0" border="0">
    <tr>
     <td align="center" valign="middle">

    <form>
     <table cols="1" rows="1" width="50" colspan="0" rowspan="0" border="0">
     <tr>
      <td align="center" valign="top">
      <nobr>
      <img src="http://a145.g.akamai.net/f/145/3220/1d/www.atptennis.com/en/images/other/atpspecial.gif" width="120" height="160" name="yourAniGif" alt="" border="0" onload="alert('onloadEvent')">
      <br><br>
      <input type="button" value="reload image" onclick="self.reloadImageSource()">
      </nobr>
      </td>
     </tr>
     </table>
     </form>

    </td>
    </tr>
    </table>
    </body>

    </html>

    viel spass - by(t)e by(t)e - peterS. - pseliger@gmx.net

    1. hallo again julis;

      die einfachste moeglichkeit ist natuerlich ein reload
      des gesamten dokuments, falls dieses klein genug ist
      und nur ein animiertes gif enthaelt - die letzte
      funktion aus meinem vorherigen bsp. saehe dann so aus:

      function reloadImageSource()
       {//if ((self.document.all) || (self.document.getElementById)) {self.document.images['yourAniGif'].src = self.yourImage.src;return;}
        if (self.document.all) {self.document.images['yourAniGif'].src = self.yourImage.src;return;}
        //self.document.images['yourAniGif'].src = blankSrc;
        //setTimeout("self.checkSource()",500);

      self.location.reload(true); //oder
        //self.location.href = self.location.href;
       }

      tschuess - peterS. - pseliger@gmx.net

      1. tja, das wäre schön...da aber das Dokument noch andere Elemente enthält, und unter anderem auch noch eine Tabelle mit asp dabei ist, wird das ziemlich schwierig...aber ich gebe nicht auf, zumahl das ja eigentlich vermuten läßt, das es eine sehr einfache Lösung dafür geben müßte. Aber Thanks für Deine Antworten -ich tüfftel noch was mit Deinen Vorschlägen rum und werde mal schauen, was sich damit noch machen läßt....