Christian S.: Property überwachen (watch, propertychange), Höhenänderung

Hi,

ich habe ein Element, dessen Höhen- und Breitenänderung ich überwachen möchte.
Innerhalb dieses Elements (div), befindet sich ein weiteres Element, dass seine Größe z.B. nach einem AJAX request ändert oder wenn man z.B. clientseitig weitere Elemente hinzufügt.
Dadurch ändert sich natürlich auch die Größe des Elternelements.

Ich habe folgendes versucht:

  
var o = element.style; // Elternelement  
var self = this;  
if(o.watch)  
{  
   o.watch("height", function(id, oldValue, newValue)  
   {  
      // tuwas();  
   });  
   o.watch("width", function(id, oldValue, newValue)  
   {  
      // tuwas();  
   });  
}  
else  
{  
   o.onpropertychange = function()  
   {  
      if(window.event && window.event.propertyName == "height" || window.event.propertyName == "width")  
      {  
         // tuwas();  
      }  
   };  
}  

Dasselbe hab ich auch probiert mit:

var o = element;

und dann mit den Properties offsetHeight und offsetWidth.

Leider alles ohne Erfolg (IE 7 und FF).

Weiß jemand eine andere Möglichkeit? Mir fiele nur noch die unschöne Möglichkeit in einem Interval ständig die Höhe/Breite abzufragen.

Gruß
Christian

  1. Hallo,

    Innerhalb dieses Elements (div), befindet sich ein weiteres Element, dass seine Größe z.B. nach einem AJAX request ändert oder wenn man z.B. clientseitig weitere Elemente hinzufügt.
    Dadurch ändert sich natürlich auch die Größe des Elternelements.

    Kannst Du nicht das den Inhalt verändernde Event (z.B. bei Ajax das Hinzufügen des neuen Contents) für die Abfrage nutzen?

    Grüße Basti

    1. Hallo,

      Innerhalb dieses Elements (div), befindet sich ein weiteres Element, dass seine Größe z.B. nach einem AJAX request ändert oder wenn man z.B. clientseitig weitere Elemente hinzufügt.
      Dadurch ändert sich natürlich auch die Größe des Elternelements.

      Kannst Du nicht das den Inhalt verändernde Event (z.B. bei Ajax das Hinzufügen des neuen Contents) für die Abfrage nutzen?

      Grüße Basti

      Ginge vermutlich. Ist aber aus folgenden Gründen unakzeptabel und schwierig.

      • Wir verwenden 3rd Party Ajax Controls, bei denen ich nicht mal sicher bin ob man den callback mitbekommt, oder ihm sogar einen Handler für die Abfrage übergeben könnte.
      • Es ist einfach zu lästig, an jeder Stelle wo eine Content Änderung stattfindet (oder stattfinden könnte) die Abfrage zu machen.
      • Das beschriebene Elternelement ist ein festes Control, was sich um die Abfrage kümmern sollte und wo die Funktionialität nur einmal programmiert werden müsste.

      Gruß!

  2. Hallo,

    ... hast du bedacht, dass die Styles direkt formatiert sein müssen

    http://de.selfhtml.org/css/formate/direkt.htm, um die Eigenschaften abfragen zu können?

    Gruß plan_B

    --
         *®*´¯`·.¸¸.·
  3. Hi,

    Dadurch ändert sich natürlich auch die Größe des Elternelements.

    ja, aber sie wird nicht auf einen anderen Wert _gesetzt_. Hast Du mal an innerHTML gedacht?

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes