Hallo,
Überwache alle Fokus- und Klickevents dokumentweit.
Wie mache ich das?
- Klickevents ist klar
- Fokus ist mir nicht klar, da ich ja keine passenden Elemente habe
Du brauchst auch keine passenden Elemente im Widget. Der Punkt ist: Wenn ein Fokus bei Elementen außerhalb des Widgets passiert, dann kann dein Widget zuklappen.
Wenn deren Zielelement nicht im Widget liegt, klappe zu.
- Meinst du ueber eine Kombination von Mausposition und Widgetgroesse/position?
Nein, über das Zielelement des Events. Dafür gibts die target-Eigenschaft des Event-Objektes bzw. im IE srcElement.
Dann überprüfst du mit contains(), ob das Zielelement im Widget liegt (bzw. in welchem - alle anderen klappst du dann zu, falls es noch mehrere Widgets gibt).
http://msdn.microsoft.com/workshop/author/dhtml/reference/methods/contains.asp
http://www.quirksmode.org/blog/archives/2006/01/contains_for_mo.html
Hmm... wieso gibst du eine Breite vor?
Die auessere Box hat eine bestimmte Groesse, damit der Widget mit anderen Elementen in der Form zusammenpasst
Dann kannst du Ausreißer nur abschneiden oder die Breite nachträglich mit JavaScript anpassen.
Das ginge auch (offsetWidth o.ä.), erscheint mir aber unnötig umständlich.
Wie ginge das im Groben vor sich?
Die offsetWidth der entsprechenden Elemente (momentan label) abfragen und gegebenenfalls die Breite des ganzen Widgets auf das breiteste anpassen.
Mit andern Worten, ich bin ziemlich sicher, dass IE das ignoriert, aber beschwoeren wuerde ich es nicht.
In meinen einfachen Beispielen setzt er es jedenfalls um.
Mathias