Mark-Oliver: Kompatibilität Mac IE5.1 -> getElementById ?

Hallo,

Ich habe einen Ticker für ein Projekt geschrieben, bei dem per
  links = document.getElementById("c1").style.left;
  breit = document.getElementById("c1").offsetWidth;
die Position und die Breite des divs ausgelesen werden.
Anschließend wird die x-Position regelmäßig um 1 Px nach links
verschoben, bis das div komplett aus dem Anzeigebereich verschwunden ist. Dann wird die Startposition wieder neu gesetzt und das Ganze fängt von vorne an.

Funktioniert alles einwandfrei in allen Browsern ab IE5.x auf Windows-Plattformen, doch auf dem Mac mit IE5.1 geht's nicht.
Der div steht fix an seiner Startposition und rappelt sich nicht.

Da in dem JS nichts drinsteht außer den beiden genannten Zeilen, ein wenig Rechenkram und anschließend das Neusetzen der x-Position mit
  document.getElementById("c1").style.left = newlinks;
vermute ich mal, dass der Mac IE5.1 Probleme mit getElementById hat. Ich habe dazu aber leider nichts finden können.

Any ideas?

Danke,
Mark-Oliver.

  1. Ich habe einen Ticker für ein Projekt geschrieben, bei dem per
      links = document.getElementById("c1").style.left;
      breit = document.getElementById("c1").offsetWidth;
    die Position und die Breite des divs ausgelesen werden.

    style.left leifert nur etwas, wenn du es auch gesetzt hast, die wirklich Position relativ zum Elternelement ist in offsetLeft

    Funktioniert alles einwandfrei in allen Browsern ab IE5.x auf Windows-Plattformen, doch auf dem Mac mit IE5.1 geht's nicht.

    glaub ich nicht, auch in Mozilla Browsern und im IE 6 im Standard Modus dürfte es auch nicht klappen.

    document.getElementById("c1").style.left = newlinks;

    newlinks ist vermutlich eine Zahl?
    Dann weiß der Browser nicht ob du x 'em','%','ex','px' oder 'cm' meinst und weiß nicht was er machen soll Ein kluger Browser macht lieber erstmal gar nichts.

    Struppi.

    1. Hi,

      style.left leifert nur etwas, wenn du es auch gesetzt hast, die wirklich Position relativ zum Elternelement ist in offsetLeft

      Ist logisch. style.left ist im div auch gesetzt. Ich habe mich im Posting nur auf die Inhalte des JS beschränkt, also Auslesen der aktuellen x-Position.

      newlinks ist vermutlich eine Zahl?

      Nein, newlinks ist die neue x-Position, also z.B. 100px. Die 100 ist vorher errechnet und dann mit 'px' ergänzt.

      Also so:
      1. Auslesen der x-Pos:
        var links = document.getElementById("c1").style.left;
      2. Extrahieren der Zahl ('px' abschneiden):
        var linkz = links.substr(0,links.length - 2);
      3. Zahl runterzählen:
        var newlinkz = linkz - 1;
      4. 'px' wieder dranhängen:
        var newlinks = newlinkz + "px";
      5. Neue x-Pos setzen:
        document.getElementById("c1").style.left = newlinks;

      Und daher geht es auch unter Win im IE ab 5.x, FF1.0, NN ab 7, nur leider nicht im IE5.1 unter Mac

      1. Hallo,

        Also so:
        2. Extrahieren der Zahl ('px' abschneiden):
          var linkz = links.substr(0,links.length - 2);

        ^Das würde ich als sehr kritisch einstufen. Hast Du Dir mal ausgeben lassen, was hiernach in linkz steht. Warum nutzt Du nicht einfach http://de.selfhtml.org/javascript/objekte/unabhaengig.htm#parse_int?

        Ansonsten kann ich zur Fehlersuche nur viele Testausgaben (alert()) empfehlen. Dort sehen, was beim Mac-IE anders ankommt als bei anderen IEs.

        Oder kann man sich das irgendwo ansehen?

        viele Grüße

        Axel

        1. parse_int ist prima, danke. Bin ich vorher nicht drauf gekommen.

          Das mit den alerts mache ich sowieso (macht besonders viel Spaß in Schleifen... ;-) ) und da kommt auch immer das richtige (im Fall von linkz also eine Zahl) an.

          Oder kann man sich das irgendwo ansehen?

          Das Projekt ist noch in der Entwicklung, daher ist der Quellcode noch etwas wirr, ich schalte das mal eben frei. URL: http://www.biognostik.de/
          Der Ticker ist oben sichtbar unter dem Logo, das div ist unter der id 'c1' zu finden, 'c2' ist quasi nur eine Wiederholung, damit der Lauf flüssig ist. Das JS ist ganz unten.

          Danke für das "Hingucken"

          1. Hallo,

            ich schalte das mal eben frei. URL: http://www.biognostik.de/

            ...
            function tictac(){
            ...
              setTimeout("nix(newlinkz1,breit1)",25);
                              ^Das dürfte auch kritisch sein. Mich wundert, dass Firefox das macht. Die Variablen newlinkz1 und breit1 sind ja nur in der Funktion tictac gültig. Die Methode setTimeout() wird aber im Gültigkeitsbereich von window aufgerufen.
            ...
            }
            function nix(newlinkz1,breit1){
               window.status = newlinkz1 + " " + breit1;
               ^Prüfe mal damit, ob die Werte für newlinkz1 und breit1 im Mac-IE hier überhaupt ankommen. Ich habe keinen Mac ;-)).

            Wenn nicht, dann probiere
              setTimeout("nix("+newlinkz1+","+breit1+");",25);

            viele Grüße

            Axel

            1. hi,

              setTimeout("nix(newlinkz1,breit1)",25);
                                ^Das dürfte auch kritisch sein. Mich wundert, dass Firefox das macht. Die Variablen newlinkz1 und breit1 sind ja nur in der Funktion tictac gültig.

              nein, sind sie nicht.

              http://de.selfhtml.org/javascript/sprache/variablen.htm:
              "Wenn Sie innerhalb von Funktionen Variablen ohne das Schlüsselwort var deklarieren, dann sind diese Variablen global."

              gruß,
              wahsaga

              --
              /voodoo.css:
              #GeorgeWBush { position:absolute; bottom:-6ft; }
          2. Hallo Mark.

            Der Ticker ist oben sichtbar unter dem Logo, das div ist unter der id 'c1' zu finden, 'c2' ist quasi nur eine Wiederholung, damit der Lauf flüssig ist.

            Ist es gewollt, dass der Ticker bei einer höheren Bildschirmauflösung rechts am Fensterrand beginnt, anstatt unter der Dropdownliste "DISTRIBUTOR LIST" ?

            Sicher gewollt:

            ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|
                   |¯¯¯¯¯¯¯¯¯¯¯|         |
                    ¯¯¯¯¯¯¯¯¯¯¯          |
                  <<< LAUFSCHRIFT        |
            ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
            Bei mir:

            ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|
                   |¯¯¯¯¯¯¯¯¯¯¯|         |
                    ¯¯¯¯¯¯¯¯¯¯¯          |
                          <<< LAUFSCHRIFT|
            ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

            Gruß, Ashura

            --
            Selfcode: sh:( fo:) ch:? rl:( br:^ n4:& ie:{ mo:) va:) de:> zu:) fl:( ss:| ls:[ js:|
            Try it: Become an Opera Lover in 30 days
            1. Ist es gewollt, dass der Ticker bei einer höheren Bildschirmauflösung rechts am Fensterrand beginnt, anstatt unter der Dropdownliste "DISTRIBUTOR LIST" ?

              Bei welchem Browser auf welchem System? Bei denen, die mir hier zur Verfügung stehen, habe ich das Problem nicht.

              1. Hallo Mark.

                Bei welchem Browser auf welchem System? Bei denen, die mir hier zur Verfügung stehen, habe ich das Problem nicht.

                Opera 7.54 unter WinXP Home SP2, Auflösung 1280*1024.

                Gruß, Ashura

                --
                Selfcode: sh:( fo:) ch:? rl:( br:^ n4:& ie:{ mo:) va:) de:> zu:) fl:( ss:| ls:[ js:|
                Try it: Become an Opera Lover in 30 days
                1. Opera 7.54 unter WinXP Home SP2, Auflösung 1280*1024.

                  Okay, muss ich mal separat checken, danke für den Hinweis.
                  Irgendeine Idee, was das Ursprungsproblem mit dem Mac IE betrifft?

                  Gruß,
                  Mark-Oliver.

                  1. Hallo Mark.

                    Okay, muss ich mal separat checken, danke für den Hinweis.

                    Kein Problem.

                    Irgendeine Idee, was das Ursprungsproblem mit dem Mac IE betrifft?

                    Nein tut mir leid, ich kenne mich mit dem Mac IE nicht aus.

                    Gruß, Ashura

                    --
                    Selfcode: sh:( fo:) ch:? rl:( br:^ n4:& ie:{ mo:) va:) de:> zu:) fl:( ss:| ls:[ js:|
                    Try it: Become an Opera Lover in 30 days
  2. Hi,

    vermute ich mal, dass der Mac IE5.1 Probleme mit getElementById hat.

    Nein, hat er nicht.

    Gruß, Cybaer

    --
    Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
    1. Nein, hat er nicht.

      Hmm, eine Idee, woran es dann liegen könnte?

      1. Hi,

        Hmm, eine Idee, woran es dann liegen könnte?

        Nein. Muscht halt probieren! =;-)

        Gruß, Cybaer

        --
        Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!