PNV: Ein Leidensbericht

Hallo dHTML-geschädigte, hallo Forum!

Macht nicht den Fehler, eine dHTML-Bibliothek erstellen zu wollen! TUT ES NICHT! :-)

Anfangs ist es ganz einfach. Funktion zum Ändern der Sichtbarkeit eines DIVs hier, Funktion zum absoluten Positionieren hier, alles ganz locker.

Dabei soll es aber nicht bleiben, was eine echte Clicki-Bunti-Seite werden will, braucht auch tolle clipping-Effekte. Informationen kann man doch nur rüberbringen, wenn sie in einem lustig ausrollenden Layer stecken... ;-)

Oberste Prämisse bei der Angelegenheit war Kompatibilität, und an sich bieten ja auch alle modernen Browser die nötigen Techniken; Der NS4.X kennt layers[x].clip.width und layers[x].clip.height, die übrigen kennen getElementByWasWeißIchWas.style.clip bzw. all[x].style.clip.

So weit, so schön.

Jetzt kommt der erste Pferdefuß.
Beim NS4.X hat man versäumt, die Attribute layers[x].width und layers[x].height zu implementieren. Aber warum auch, man kann ja clip.width bzw clip.height auslesen, wenn man wissen will, wie breit/hoch ein Layer ist...
Danke, ihr Netsie-Helden, jetzt muß ich von allen DIVs beim Laden diese clip.width - bzw clip.height - Werte auslesen und speichern, weil nach dem ersten clippen sonst nicht mehr zu ermitteln ist, auf welche Maße das DIV-Element zurückgeclippt werden muß, wenn ich es 'ausrollen' lassen will :-(
Das gibt nämlich sonst fehlende Ecken und Kanten.
Ok, das ginge ja noch. Sie hatten bei der Markteinführung halt zu wenig Zeit. Akzeptiert.

Aber Microsoft wäre nicht Microsoft, wenn sie nicht die größeren Pferdefüße hätten.
Denn wer versucht, den String in all[x].style.clip auszulesen, muß schnell feststellen, daß da nix drinsteht, wenn man nicht vorher irgendwas reingeschrieben hat :-(
Wäre es denn zuviel verlangt gewesen, hier die aktuellen Daten zu speichern? Scheinbar schon.
Also heißt es, für jedes DIV ein Flag zu defieren, das signalisiert, ob in clip schon was drin steht oder nicht (btw:man könnte auch den String untersuchen, ob er leer ist,wäre eleganter), und wenn nicht, die clipping-Maße per Fuß zu ermitteln. Leider kann man nicht einfach Breite und Höhe auslesen, weil bei Verwendung von padding und border der echte clipping-Wert größer ist als der, der in style.width bzw. style.height steht.
Man muß also noch den padding-wert mit 2 multiplizieren und zu style.width/style.height hinzuaddieren, und um dem ganzen die Krone aufzusetzen, die Breite des Randes ermitteln,zu verdoppeln und hinzuaddieren, was nicht ganz einfach ist, weil in style.borderWidth kein Pixelwert, sonder sowas wie 'thin' steht :-((
So ein Schlammassel!

Lustiger wird es, wenn man nicht nur clippen will, sondern die Größe eines Layers verändern möchte!
Denn wenn im DIV ein Element mit festen Maßen definiert ist, kann der DIV-Layer nicht kleiner werden als diese Maße. Hm, man könnte ja clippen ;-)

Netscape bietet in seinem Navigator 4.X für Größenveränderungen die Methoden resizeTo und resizeBy. Leider aktualisiert er dabei nicht die Zeilenumbrüche und Abstände. Meines Wissens gibt es hierfür kein elegantes Workaround, weder neuschreiben (document.open()...etc) noch Verschachteln von Layern sind akzeptabel für meine Bibliothek. *grummel*

Sollte tatsächlich jemand bis hier unten gelesen haben, muß ich mich mal entschuldigen, daß vielleicht nicht immer klar ist, worum es eigentlich geht, aber ich denke ich habe auch für Leute, die grade nicht 'drin' stecken, eine kleine Argumentationshilfe für kollektive Browserverteufelungen geliefert :-)

Und sollte jemand einen Ausweg aus meinen Problemen kennen, ich bin für jede Hilfe dankbar!

Schöne Grüße
Dominic

  1. Willkommen im Club!

    CassidY

  2. Hallo dHTML-geschädigte, hallo Forum!

    Macht nicht den Fehler, eine dHTML-Bibliothek erstellen zu wollen! TUT ES NICHT! :-)

    Verwende doch die dynapi oder dynapi2

    TUT ECHT GUT!

    Ciao, Volker

  3. Hallo dHTML-geschädigte, hallo Forum!

    Macht nicht den Fehler, eine dHTML-Bibliothek erstellen zu wollen! TUT ES NICHT! :-)

    Verwende doch die dynapi oder dynapi2

    TUT ECHT GUT!

    Ciao, Volker

  4. Und wenn Du irgendwann mal meinst es endlich hinbekommen zu haben, dann guck dir die Seite mal mit Netscape 6 an...
    gruß
    upsi

    1. Und wenn Du irgendwann mal meinst es endlich hinbekommen zu haben, dann guck dir die Seite mal mit Netscape 6 an...
      gruß
      upsi

      Ja genau - und wenn das dann geht. Dann wechlse mal auf einen MAC. Wenn das zu wenig Masorchismus ist, dann geht auch ein UNIX oder so...

      cheers
      kaepten
      *derauchschonseineliebenerfahrungengemachthat*

      1. Und wenn Du irgendwann mal meinst es endlich hinbekommen zu haben, dann guck dir die Seite mal mit Netscape 6 an...
        gruß
        upsi

        Ja genau - und wenn das dann geht. Dann wechlse mal auf einen MAC. Wenn das zu wenig Masorchismus ist, dann geht auch ein UNIX oder so...

        Und wenn Du dann evtl. meinst, es endlich hinbekommen zu haben ... Guck Dir die Seite doch mal mit Opera an ...

        Cya,

        Harry

  5. hallo pnv,

    um deine qualen ein wenig zu lindern schau doch mal auf http://www.brainjar.com nach und suche dort die dhtmllib.js.
    der mann hat das genial gelöst (ie, ns) und bietet dir noch viele andere features.

    gruß
    wts

    ps: mike hall ist für mich ein js-guru, schon allein deshalb weil er es von sich nicht behauptet *g*

    1. hallo pnv,

      um deine qualen ein wenig zu lindern schau doch mal auf http://www.brainjar.com nach und suche dort die dhtmllib.js.
      der mann hat das genial gelöst (ie, ns) und bietet dir noch viele andere features.

      hi wts,
      geht aber auch nicht mit Netscape 6.
      gruß
      upsi

      1. hallo upsi,

        geht aber auch nicht mit Netscape 6.
        <

        das hätte mich aber auch sehr irritiert!
        die sache mit dem happy-cross-browser-code fängt erst bei ns 4 und ie4 an und als dieser code geschrieben wurde gab es noch kein ns 6 !
        zumal der keinen layer mehr kennt und sowieso anders als seine vorgänger funktioniert !

        gruß
        wts

        1. hallo wts,

          genau das ist das problem, dass netscape 6 nicht rückwärtskompatibel ist. ich wundere mich, dass es nicht viel mehr geschrei deswegen gibt. wahrscheinlich haben die meisten ihre seiten noch gar nicht mit ns6 angeschaut.
          gruß
          upsi

          1. hallo upsi,

            genau das ist das problem, dass netscape 6 nicht rückwärtskompatibel ist. ich wundere mich, dass es nicht viel mehr geschrei deswegen gibt. wahrscheinlich haben die meisten ihre seiten noch gar nicht mit ns6 angeschaut.
            <

            geschreih *g*, darauf haben alle webautoren lange gewartet daß der netsi sich langsam an den w3c-richtlinien orientiert, da wird so schnell keiner schreien, höchstens jubelschreie.
            aber mal im ernst, ist denn der ns 6 schon offiziell ?
            dieses "gerät" blieb bei mir bis dato außen vor.

            gruß
            wts

            1. Hallo wts!

              aber mal im ernst, ist denn der ns 6 schon offiziell ?

              Geplanter Erscheinungstermin: 27.10. (2009)

              ;-)

              Bis danndann
              PAF (patrickausfrankfurt)

              <img src="/selfaktuell/extras/selfcomm.jpg" alt=""> http://www.atomic-eggs.com/selfspezial/guests/advguest.cgi?view

              <img src="http://www.atomic-eggs.com/selfspezial/atomicegg.gif" id="ei" alt="Atomic Eggs - die humosophische Seite" onMouseUp="window.location.href='http://www.atomic-eggs.com/'" onmouseover="if(document.all)document.all.ei.style.cursor='hand';status='http://www.atomic-eggs.com/';return true;" onmouseout="status='';return true;">