trunx: Opera-Bug? mit javascript und css

Hallo Forum,

folgendes Stück Code funktioniert in anderen (modernen) Browsern ohne Probleme (es soll sich lediglich ein kleines Bild bewegen, das Bild ist nur jetzt für Testzwecke ein Inline-Bild, im IE sieht man trotzdem, dass der Code funktionert) - im Opera verschwindet dagegen das Bild:

  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
        "http://www.w3.org/TR/html4/loose.dtd">  
<html lang="de">  
  <head>  
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">  
  <title>Opera-Bug?</title>  
  <style type="text/css">  
    html, body { width: 100%; height: 100%; margin: 0; padding: 0; border: 0; }  
    #box1 { position:absolute; top: 10px; left: 20px; height: 30%; min-height: 200px; width: 90%; min-width: 750px; }  
    #box2 { position:absolute; bottom: 0px; left: 20%; height: 150px; width: 65%; min-width: 540px; }  
    #box3 { position:absolute; top: 0px; left: 0px; height: 20px; width: 20px; }  
  </style>  
  <script type="text/javascript" language="JavaScript">  
function bild() {  
  var obj=null;  
  if(document.all) { obj=document.all.box3; }  
  else if(document.getElementById) { obj=document.getElementById('box3'); }  
  var bt = parseInt(obj.style.top+0);  
  if(bt>=130) { obj.style.top=130+"px"; }  
  else { obj.style.top = bt+2+"px";  
    window.setTimeout("bild()",5); } }  
  </script>  
  </head>  
  <body onload="bild()">  
    <div id="box1"><div id="box2">  
      <div id="box3"><img src="data:image/gif;base64,  
                      R0lGODlhFAAUAIAAAAAAAP///yH5BAAAAAAALAAAAAAUABQAAAIRhI+py+0Po5y02ouz3rz7rxUAOw=="  
                      alt="" border="0" height="20" width="20">  
      </div>  
    </div></div>  
  </body>  
</html>  

Nun meine Frage: ist das tatsächlich ein Bug oder habe ich irgendwas falsch gemacht? Hatte jemand von euch mal ähnliche Probleme oder weiß sonst irgendwie wie man den Fehler beheben könnte? Ich bin halb am Verzweifeln und wär super dankbar für Hilfe...

also vielen Dank schon mal im Voraus
bye trunx

--
Die Standard-Antwort: "Bitte benutze die Forum-Suche!" macht die Forum-Suche kaputt, weil die Suche dann nämlich genau vor allem diese dämliche Standard-Antwort, also Müll liefert. Sinnvoller ist stattdessen folgende Standard-Antwort: "Dieses Thema wurde schon vielfach im Forum besprochen, siehe z.B. <a>hier</a> oder <a>hier</a> oder benutze die Forum-Suche z.B. mit den Stichworten 'Stichwort1 Stichwort2'." Danke.
  1. Hallo,

    Nun meine Frage: ist das tatsächlich ein Bug oder habe ich irgendwas falsch gemacht?

    Mit Opera 9.63 schaut es bei mir aus wie unter Firefox. Opera 9.27 läßt tatsächlich das Bild verschwinden, also wohl ein Bug.

    Grüsse

    Cyx23

    1. Hallo

      ... also wohl ein Bug.

      ja, das dachte ich mir fast...hast du ne Ahnung wie man speziell für Opera vllt javascript ausschalten kann? Obwohl - vllt frage ich einfach den userAgent ab und bewege das Bild halt in Opera nicht...

      ok, vielen Dank erstmal
      trunx

      --
      Die Standard-Antwort: "Bitte benutze die Forum-Suche!" macht die Forum-Suche kaputt, weil die Suche dann nämlich genau vor allem diese dämliche Standard-Antwort, also Müll liefert. Sinnvoller ist stattdessen folgende Standard-Antwort: "Dieses Thema wurde schon vielfach im Forum besprochen, siehe z.B. <a>hier</a> oder <a>hier</a> oder benutze die Forum-Suche z.B. mit den Stichworten 'Stichwort1 Stichwort2'." Danke.
      1. [latex]Mae  govannen![/latex]

        Fehlerhaftes Verhalten mit mehreren Versionen < 9.5 bestätigt.

        ja, das dachte ich mir fast...hast du ne Ahnung wie man speziell für Opera vllt javascript ausschalten kann? Obwohl - vllt frage ich einfach den userAgent ab und bewege das Bild halt in Opera nicht...

        Nein, userAgent ist keine gute Lösung, der lügt wie gedruckt ^^ . Teste stattdessen auf z.B. window.opera

        Ansonsten kannst du die Abfrage auf document.all komplett entfernen, es sei denn, du willst noch IE4! unterstützen. Ab IE5 reicht document.getElementById. Das language="javascript" ist ebenfalls unnötig und kann entfernt werden.

        Cü,

        Kai

        --
        „It's 106 miles to Chicago, we got a full tank of gas, half a pack of cigarettes, it's dark, and we're wearing sunglasses“.
        „Hit it!“
        Selfzeugs
        SelfCode: sh:( fo:| ch:? rl:( br:< n4:( ie:{ mo:| va:) js:| de:> zu:) fl:( ss:| ls:?
        1. [latex]Mae  govannen![/latex]

          Nein, userAgent ist keine gute Lösung, der lügt wie gedruckt ^^ . Teste stattdessen auf z.B. window.opera

          .. um neuere Operas nicht auszuschließen z.B. in Verbindung mit z.B. document.compareDocumentPosition oder window.postMessage

          siehe hier

          Cü,

          Kai

          --
          „It's 106 miles to Chicago, we got a full tank of gas, half a pack of cigarettes, it's dark, and we're wearing sunglasses“.
          „Hit it!“
          Selfzeugs
          SelfCode: sh:( fo:| ch:? rl:( br:< n4:( ie:{ mo:| va:) js:| de:> zu:) fl:( ss:| ls:?
          1. Hallo,

            so, ich habe nun folgende Lösung gefunden: ich verstecke das Bild, verschiebe es und zeige es danach wieder, dann klappts bei mir...der code sieht also wie folgt aus:

            ...  
              <script type="text/javascript">  
            function bild() {  
              var obj=null;  
              if(obj=document.getElementById('box3')) {  
              var bt = parseInt(obj.style.top+0);  
              if(bt>=130) { obj.style.top=130+"px"; }  
              else {  
                obj.style.visibility="hidden";  
                obj.style.top = bt+2+"px";  
                obj.style.visibility="visible";  
                window.setTimeout("bild()",5);  
            } } }  
              </script>...  
            
            

            so sollte es gehen... nochmal Danke an alle
            bye trunx

            --
            Die Standard-Antwort: "Bitte benutze die Forum-Suche!" macht die Forum-Suche kaputt, weil die Suche dann nämlich genau vor allem diese dämliche Standard-Antwort, also Müll liefert. Sinnvoller ist stattdessen folgende Standard-Antwort: "Dieses Thema wurde schon vielfach im Forum besprochen, siehe z.B. <a>hier</a> oder <a>hier</a> oder benutze die Forum-Suche z.B. mit den Stichworten 'Stichwort1 Stichwort2'." Danke.
            1. bye trunx

              --
              Die Standard-Antwort: "Bitte benutze die Forum-Suche!" macht die Forum-Suche kaputt, weil die Suche dann nämlich genau vor allem diese dämliche Standard-Antwort, also Müll liefert. Sinnvoller ist stattdessen folgende Standard-Antwort: "Dieses Thema wurde schon vielfach im Forum besprochen, siehe z.B. <a>hier</a> oder <a>hier</a> oder benutze die Forum-Suche z.B. mit den Stichworten 'Stichwort1 Stichwort2'." Danke.
        2. Nein, userAgent ist keine gute Lösung, der lügt wie gedruckt ^^ . Teste stattdessen auf z.B. window.opera

          Wieso sollte window.opera zuverlässiger sein als navigator.userAgent? (Ich schiele mit der Frage eher auf deinen Rat zum Testen der Version über unbeteiligte Drittobjekte anstatt über navigator.appVersion.)

          Unter welchen Umständen genau lügt navigator in diesem Fall?

          Mathias

          1. [latex]Mae  govannen![/latex]

            Nein, userAgent ist keine gute Lösung, der lügt wie gedruckt ^^ . Teste stattdessen auf z.B. window.opera

            Wieso sollte window.opera zuverlässiger sein als navigator.userAgent? (Ich schiele mit der Frage eher auf deinen Rat zum Testen der Version über unbeteiligte Drittobjekte anstatt über navigator.appVersion.)

            Unter welchen Umständen genau lügt navigator in diesem Fall?

            Ich weiß es jetzt nicht genau, aber ich meine, Cybaer hätte diesbezüglich mal einen Test gemacht, in dem auch dieser Wert durch einen falschen UA neu gesetzt wurde, ob das auf IE beschränkt war oder Opera (oder andere Browser) beinhaltete, kann ich jetzt nicht sagen. Ist mir ehrlich gesagt jetzt auch zu spät, danach zu suchen oder es zu testen.

            Jedenfalls war da mal was, oder ich irre mich komplett. "Meine" Methode ist auch nicht ideal, das ist mir durchaus bewußt, aber zumindest ist es auf diese Weise _relativ_ sicher, Opera zu erkennen. (Besswer wäre wahrscheinlich noch, keinen ineninander verschachtelten positionierten Elemente zu benutzen, um den Opera-Bug gar nicht erst zu triggern.

            Cü,

            Kai

            --
            „It's 106 miles to Chicago, we got a full tank of gas, half a pack of cigarettes, it's dark, and we're wearing sunglasses“.
            „Hit it!“
            Selfzeugs
            SelfCode: sh:( fo:| ch:? rl:( br:< n4:( ie:{ mo:| va:) js:| de:> zu:) fl:( ss:| ls:?
            1. Hallo,

              vielen Dank für die Tipps,

              Besser wäre wahrscheinlich noch, keine ineinander verschachtelten positionierten Elemente zu benutzen, um den Opera-Bug gar nicht erst zu triggern.

              das werde ich erstmal versuchen anders zu lösen, aber vermutlich wird es dabei bleiben...ansonsten halt die älteren Operas ausschließen.

              also Danke nochmal, wenn ich die Lösung habe, poste ich es hier
              ciao trunx

              --
              Die Standard-Antwort: "Bitte benutze die Forum-Suche!" macht die Forum-Suche kaputt, weil die Suche dann nämlich genau vor allem diese dämliche Standard-Antwort, also Müll liefert. Sinnvoller ist stattdessen folgende Standard-Antwort: "Dieses Thema wurde schon vielfach im Forum besprochen, siehe z.B. <a>hier</a> oder <a>hier</a> oder benutze die Forum-Suche z.B. mit den Stichworten 'Stichwort1 Stichwort2'." Danke.
          2. Unter welchen Umständen genau lügt navigator in diesem Fall?

            Ähm, dumme Frage, natürlich in dem (unwahrscheinlichen) Fall, dass man »als Firefox/Internet Explorer maskieren« einstellt.

            Worauf ich hinaus wollte war eher, wieso man nicht einfach Einrichtungen wie window.opera.version() nutzt.

            Mathias