LiveSucks: Bei Zellenhöhenänderung automatisch Neuzeichnen der Site

Hallo an alle !

Vor fünf Tagen hab ich angefangen, HTML und JavaSkript zu lernen.
Im Moment probier ich grade, folgendes Problemchen zu lösen:

Ich habe eine HTML-Datei mit einer Tabelle gebastelt, die so breit
ist, wie das Browserfenster.

<table width="100%">

Ich möchte jetzt erreichen, daß - sobald sich die Höhe einer bestim-
mten Tabellenzelle ändert - die komplette HTML-Datei im Browser neu
gezeichnet wird.

<td id="id">Das ist mal die Zelle</td>

Die Höhe einer Tabellenzelle (ihre id sei "id") bekommt man - wenn
ich alles, was ich bisher gelesen habe, richtig verstanden habe -
über:

document.all[id].clientHeight  (IE5+)
bzw.
(document.all)?document.getElementById(id).clientHeight:document.getElementById(id).offsetHeight (NETSCAPE)

Das Browserfenster neu zeichnen kann man über:

window.history.go(0);

Das Problem liegt im Event-Handling:

Hat jemand eine Idee, wie ich die ständige Überwachung der Änderung der Zellenhöhe implementieren könnte ?

____________________________________________________________

Prinzipiell gibt es dazu ja zwei Möglichkeiten:

Möglichkeit 1: Unmittelbare Überwachung des Wertes für die Zellhöhe
               auf Änderung hin und ggf. gewünschtes Neuzeichnen:

document.all[id].clientHeight bzw. das entsprechende Netscape-
     Pendant ständig daraufhin überwachen, ob sich der darin
     gespeicherte Wert ändert und im Änderungsfall das Neuzeichnen
     durchführen.

Wie man in JavaScript die ständige Überwachung eines einzelnen
     Wertes/einer Variablen auf Änderung implementiert, weiss ich
     leider (noch) nicht.

Bin dem aber auf der Spur. Kann man da vielleicht mit
     irgendeinem .onchange was machen ? Wenn ja, wo müsste das hin ?
     (head, body oder in den td-tag)

Möglichkeit 2: Mittelbare Überwachung, indem man
   a) alle Ereignisse überwacht, die ggf. eine Änderung der
      Tabellenzellenhöhe bewirken könnten, und
   b) das Neuzeichnen auf Verdacht ausführt sobald eines dieser
      Ereignisse eintritt.
   Die Ereignisse, die in diesem Fall überwacht werden müssten,
   wären:
   1. Änderung der Fenstergröße
   2. Änderung des Anzeigeschriftgrades (Ansicht -> Schriftgrad ->
      Sehr klein/klein/mittel/gross/ sehr gross)
   3. Welche, die ich vergessen habe.

Bisher bin ich an Möglichkeit 2.
Überwachung von Ereignis 1 (Fenstergrößenänderung) und ggf. Neuzeich-
nen bei Eintritt habe ich hinbekommen (Habe dazu den schönen Event-
Handler window.onresize entdeckt). Bei Überwachung von Ereignis 2
(Anzeigeschriftgradänderung) hapert es schon. Die Ereignisse 3
bereiten mir natürlich auch Sorge ;-)

Für Antworten bedanke ich mich schon mal recht herzlich im voraus
und verbleibe

mit freundlichem Gruß

als

LiveSucks

  1. Hi

    Für fünf Tage scheinst du dich ja schon ganz gut eingearbeitet zu haben.
    Aber was mich interessieren würde, ist was du mit deiner Überwachung erreichen willst.
    window.history.go(0); holt ja einfach die Seite nochmal vom Server, als das gleiche, was du jetzt schon hast. Wenn durch JS oder eine Änderung der Fenstergröße o.ä. das Layout der Seite verändert wird, dann rendert der Browser sie sowieso neu. Soll heißen, wenn sich die Höhe einer Tabellenzelle verändert, dann tut sie das eben auch, und wenn du die Seite nochmal lätst, dann schaut sie dadruch auch nicht anders aus. Vielleicht beschreibst du noch kurz, _was_ du eingentlich willst (da das ja sicher kein Selbstzweck ist). Dann fallen Antworten i.d.R. zielgerichteter aus.

    MfG

    Heizer

    1. Hi

      Für fünf Tage scheinst du dich ja schon ganz gut eingearbeitet zu haben.

      Nicht wirklich. Habe ja keinen Plan !! Sonst könnte ich ja Antworten
      hierher posten und müsste nicht Fragen stellen ;-)

      Aber was mich interessieren würde, ist was du mit deiner
      Überwachung erreichen willst.
      window.history.go(0); holt ja einfach die Seite nochmal vom
      Server, als das gleiche, was du jetzt schon hast. Wenn durch JS
      oder eine Änderung der Fenstergröße o.ä. das Layout der Seite
      verändert wird, dann rendert der Browser sie sowieso neu.

      Eben nicht alles wird sowieso neu gerendert. Einmal geladene
      Grafiken bleiben so, wie sie sind.
      Zumindest bei MS-IE5+.
      Die Mächte, die über mich walten, haben beschlossen, daß dem User
      zuviel zugemutet wird, wenn er in so einem Fall selbst auf
      "aktualisieren" klickt.

      Soll heißen, wenn sich die Höhe einer Tabellenzelle verändert,
      dann tut sie das eben auch, und wenn du die Seite nochmal lätst,
      dann schaut sie dadruch auch nicht anders aus. Vielleicht
      beschreibst du noch kurz, _was_ du eingentlich willst (da das ja
      sicher kein Selbstzweck ist). Dann fallen Antworten i.d.R.
      zielgerichteter aus.

      Ich habe ein Bild, welches in einer Tabelle liegt und _immer genau_ die Zellenhöhe einnehmen soll, ohne daß der User auf "aktuali-
      sieren" klickt. Es handelt sich diesmal um ein Logo, welches via CGI
      aus einem Metafont-file beim Lagen immer neu erzeugt wird. Mit
      Hintergrund-Bildern und Pixel-Segmenten und so kann ich bei diesem
      Logo leider nichts machen.

      Ich habe es hinbekommen, daß - sobald der User die Fenstergröße
      ändert - die Grafik neu berechnet und erzeugt wird und in die
      Tabelle eingefügt wird(und dabei hab ich den ganzen Redundanz-
      Schnickschnack auch hinbekommen, der sich dadurch ergibt, daß sich
      bei geänderter Grafikhöhe auch die Grafikbreite ändert, was sich
      wieder auf den Zeilenumbruch in der Nachbarzelle auswirkt, was sich
      wiederum auf die Höhe der Zelle auswirkt ...)

      Leider ist ja die Änderung der Fenstergröße nicht der einzige Fall,
      bei dem es dazu kommen kann, daß eine Tabelle ihre Zellhöhe ändert.
      Deshalb würde ich die Zellhöhenänderung lieber direkt überwachen.

      Um das zu basteln, müsste ich allgemein wissen, ob es möglich ist,
      den Inhalt einer bestimmten Variable dauerhaft auf Wertänderung hin
      zu überwachen bzw. wie man das macht.
      Ein (einfaches ?) Beispiel, wo der Wert einer Variablen -
      beispielsweise durch Eingeben des Wertes - geändert wird und mir dies
      in einer alert-box mitgeteilt wird, würde schon reichen.
      Das ganze dürfte aber nicht <form>- oder tag-speiofisch sein, sondern
      es müsste schon die Variable selbst überwacht werden.

      MfG

      Heizer

      Ich bedanke mich für das Interesse und die Antwort

      Mit freundlichem Gruß

      LiveSucks