Raik: Frage zu offsetWidth

Hallo,

die erklärung zu offsetWidth ist nicht eindeutig.
solange nicht quergescrollt werden muss, entspricht die offsetWidth des html-elements (body u.U. weniger) der fensterbreite.
was müsste offsetWidth aber ausgeben, wenn durch enthaltene elemente die seite breiter wird, als das fenster? die fensterbreite, oder die dann grössere breite des body b.z.w. html?

hintergrund:
der fx1.07 gibt die breite des elements zurück, der fx1.5 hingegen die fensterbreite. ich verwende das, um eine textarea auf maximal ohne querscrollen mögliche breite zu resizen.

freundl. Grüsse aus Berlin, Raik

--
Der IE ist wichtig. Man benötigt ihn, um sich einen Browser zu besorgen.
Resizeable Textarea 0.1a
  1. hi,

    die erklärung zu offsetWidth ist nicht eindeutig.
    solange nicht quergescrollt werden muss, entspricht die offsetWidth des html-elements (body u.U. weniger) der fensterbreite.
    was müsste offsetWidth aber ausgeben, wenn durch enthaltene elemente die seite breiter wird, als das fenster? die fensterbreite, oder die dann grössere breite des body b.z.w. html?

    Das kommt wohl darauf an, ob das Element html eine feste Breitenangabe hat oder auto, und auch noch auf den Wert der Eigenschaft overflow.
    Diese werden wohl im Default-Style der Browser Abweichungen aufweisen können, ggf. auch innerhalb verschiedener Browserversionen.

    hintergrund:
    der fx1.07 gibt die breite des elements zurück, der fx1.5 hingegen die fensterbreite. ich verwende das, um eine textarea auf maximal ohne querscrollen mögliche breite zu resizen.

    Und warum benutzt du dann nicht die Breite des Viewports?

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hallo, wahsaga!

      Und warum benutzt du dann nicht die Breite des Viewports?

      damit bekomme ich doch auch nur die sichtbare breite, oder?
      das ist mein script:

        
      <script type="text/javascript">  
      var TA = document.getElementsByTagName("TEXTAREA")[0];  
      var WIDTH1 = document.getElementsByTagName("BODY")[0].offsetWidth;  
      TA.style.width = WIDTH1;  
      var WIDTH2 = document.getElementsByTagName("HTML")[0].offsetWidth;  
      TA.style.width = parseInt(WIDTH1) * 2 - parseInt(WIDTH2);  
      </script>  
      
      

      die textarea hat keine besonderen eigenschaften (overflow, etc.).
      ich "messe" die breite von "body", "oversize" die textarea, und ziehe hinterher die breite von "html" statt von "body" ab, wodurch ich auch gleich den scrollbalken mit berücksichtige.
      mit fx1.0.7 hatte ich so die perfekte breite für das fenster, mit fx1.5.0 geht es so nicht (mehr). :-(

      freundl. Grüsse aus Berlin, Raik

      --
      Der IE ist wichtig. Man benötigt ihn, um sich einen Browser zu besorgen.
      Resizeable Textarea 0.1a
      1. hi,

        Und warum benutzt du dann nicht die Breite des Viewports?

        damit bekomme ich doch auch nur die sichtbare breite, oder?

        Ich dachte, die wolltest du haben?
        Wie sonst meinst du das, dass du die Textarea so breit machen willst, dass man nicht querscrollen muss?

        var WIDTH1 = document.getElementsByTagName("BODY")[0].offsetWidth;
        TA.style.width = WIDTH1;

        Da fehlt die Angabe der Einheit.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Hallo, wahsaga!

          damit bekomme ich doch auch nur die sichtbare breite, oder?
          Ich dachte, die wolltest du haben?

          nein, ich will die differenz zwischen fensterbreite und breite der seite nach verbreitern der textarea (= horizontaler scrollbalken) haben, um die textarea um diesen betrag wieder schmaler machen zu können.

          Wie sonst meinst du das, dass du die Textarea so breit machen willst, dass man nicht querscrollen muss?

          ich könnte natürlich in einer schleife den dom-baum hinaufkrabbeln und von allen parrent-elementen bestimmen, wieviel platz da wegen relativer breitenangaben noch zu holen ist. das ist aber sehr aufwändig und fehleranfällig.
          also gehe ich den umgedrehten weg, setze die breite der textarea auf die des body, was alle "nachgiebigen" elternelemente zusammenstaucht und nen querscrollbalken erzeugt, und ziehe dann die differenz zur neuen body-breite wieder ab, so dass die textarea die, ohne querscrollen, maximal mögliche breite hat. (1pixel mehr, und ich hab wieder nen querscrollbalken.)

          die eigentliche frage ist ja auch:
          ist offsetWidth als maximal die breite des fensters definiert, oder als breite des jeweiligen elements, auch wenn das breiter ist, als das fenster?

          freundl. Grüsse aus Berlin, Raik

          --
          Der IE ist wichtig. Man benötigt ihn, um sich einen Browser zu besorgen.
          Resizeable Textarea 0.1a
          1. Hallo,

            da sich niemand mehr angesprochen fühlt, versuche ich nochmal, auf diesen tread aufmerksam zu machen.
            zu klären ist die frage:

            ist offsetWidth als maximal die breite des fensters definiert, oder als breite des jeweiligen elements, auch wenn es breiter ist, als das fenster?

            freundl. Grüsse aus Berlin, Raik

            --
            Der IE ist wichtig. Man benötigt ihn, um sich einen Browser zu besorgen.
            Resizeable Textarea 0.1a
            1. Hallo Raik.

              da sich niemand mehr angesprochen fühlt, versuche ich nochmal, auf diesen tread aufmerksam zu machen.
              zu klären ist die frage:

              ist offsetWidth als maximal die breite des fensters definiert, oder als breite des jeweiligen elements, auch wenn es breiter ist, als das fenster?

              Hilft die offsetWidth-Spezifikation ein wenig weiter?

              Einen schönen Montag noch.

              Gruß, Ashura

              1. Hallo, Ashura!

                Hilft die offsetWidth-Spezifikation ein wenig weiter?

                wenn ich das richtig verstanden habe, ist die erklärung in selfhtml
                <quote>
                Das Beispiel gibt mit Seite alert() die reale Breite des <body>-Tags der Datei aus. Das Ergebnis ist die tatsächliche Anzeigebreite des Fensters, in dem das Dokument angezeigt wird. Die Eigenschaft lässt sich aber ebensogut auf HTML-Elemente innerhalb der angezeigten Inhalte anwenden.
                </quote>
                zumindest missverständlich, wenn nicht sogar falsch, weil die breite des elements mit der fensterbreite in keinem zusammenhang steht.

                dann ist auch die ausgabe der rc1 des fx1.5.0 für offsetWidth fehlerhaft.

                freundl. Grüsse aus Berlin, Raik

                --
                Der IE ist wichtig. Man benötigt ihn, um sich einen Browser zu besorgen.
                Resizeable Textarea 0.1a