Eigene Events definieren für IE
Andreas Dölling
- javascript
Hallo,
ich habe heute "entdeckt", daß man im Mozilla wunderbar und unkompliziert selbstgestrickte Events erzeugen und auslösen kann (Stichworte: createEvent(), initEvent(() und dispatchEvent()).
Leider klappt das im Microsoft-Event-Modell natürlich nicht.
Dort gibt es die Möglichkeit, mit createEventObject() und fireEvent() zu arbeiten. Allerdings klappt das nur mit Standard-Events, also z.B. mit "mouseover" und nicht etwa mit "foo".
Bei meinen bisherigen Recherchen bin ich bislang nur auf die Lösung gestoßen, im IE sogenannte Behaviours (.htc-Dateien) einzusetzen. Damit könnte ich auch frei definierbare Events erzeugen.
Allerdings hätte ich so wieder einen ziemlich unschönen Klotz am Bein.
Daher meine Frage an Euch: kennt Ihr eine Möglichkeit für den IE ohne den Einsatz von Behaviours?
(Konkret geht es bei mir darum, daß ich in einem sehr komplexen, vollständig objektorientierten JS-Projekt das Problem habe, daß sich einzelne Objekte, die nichts voneinander wissen, dennoch durch Aktionen gegenseitig beeinflussen können. Dies könnte ich sehr elegant lösen, indem die Objekte bei Bedarf Events auslösen.
Zum Beispiel könnte ein Objekt der Klasse ContextMenu einen Event "displayContextMenu" auslösen, wenn es angezeigt wird. Auf dieses Ereignis könnten dann andere betroffene Objekte reagieren - und das Ganze wäre trotzdem weiterhin vollständig unabhängig voneinander gekapselt.)
Danke für Eure Anregungen!
Ciao,
Andreas
Hallo Andreas,
Zum Beispiel könnte ein Objekt der Klasse ContextMenu einen Event "displayContextMenu" auslösen, wenn es angezeigt wird.
Das gibt es für den IE doch fix und fertig:
und auch einiges anderes an
exotischen Eventhandlern, die sonst kein Browser kennt.
Vielleicht kannst du damit ja was anfangen.
Gruß Gernot
Hallo Gernot,
danke für Deine Antowrt!
Das gibt es für den IE doch fix und fertig:
oncontextmenu
nee, das ist etwas verzwickter bei mir. Den Event "contextmenu" benutze ich schon. Das klappt wunderbar.
Ich muß nun aber dafür sorgen, daß - während mein selbstgebautes Kontextmenü angezeigt wird - andere Objekte passiv bleiben bzw. passiv gesetzt werden.
Klar, das könnte man mit einer globalen boolschen Variablen machen - aber dann würde das Ganze an Flexibilität und Modularität einbüßen.
Der Idealzustand wäre für mich, daß das Objekt XY, etwa eine Instanz einer DragDropHandler-Klasse, gar nichts davon weiß, daß es überhaupt ein ContextMenu-Objekt gibt, geschweigedenn, ob dieses sichtbar ist oder nicht.
Aber dieses Objekt XY könnte auf einen Event "contextMenuDisplayed" lauschen und ggf. reagieren.
Auf diese Weise blieben die Klassen voneinander unabhängig und könnten auch separat für andere Projekte eingesetzt werden.
Ciao,
Andreas
Heißa, Gernot,
exotischen Eventhandlern
An error occurred on the server when processing the URL. Please contact the system administrator.An error occurred on the server when processing the URL. Please contact the system administrator.
Was haben diese ASP-Seiten bloß immer gegen meinen Konqueror? Auf nahezu jeder ASP- und JSP-Seite erhalte ich nur 500er-Fehler. Die MSN-Suche ist die einzige Seite der Art, die funktioniert.
Gautera!
Grüße aus Biberach Riss,
Candid Dauth
Hallo Candid.
Was haben diese ASP-Seiten bloß immer gegen meinen Konqueror? Auf nahezu jeder ASP- und JSP-Seite erhalte ich nur 500er-Fehler. Die MSN-Suche ist die einzige Seite der Art, die funktioniert.
Mit meinem Konqueror gibt es keine Probleme.
Ich kann aber einen 500er (zumindest glaube ich, dass es einer ist) provozieren, in dem ich das Senden des UserAgent-Strings deaktiviere. Wie sieht es hier bei dir aus?
Einen schönen Freitag noch.
Gruß, Ashura
Heißa, Ashura,
Ich kann aber einen 500er (zumindest glaube ich, dass es einer ist) provozieren, in dem ich das Senden des UserAgent-Strings deaktiviere. Wie sieht es hier bei dir aus?
Jup, das ist bei mir so eingestellt. Ich würde eigentlich gerne meinen UserAgent selbst einstellen, aber das scheint im Konqueror nicht möglich zu sein.
Aber man wird doch wohl von einem großen Konzern wie Sun oder Microsoft erwarten können, dass diese ihre Server so konfigurieren, dass man auch so deren Seiten benutzen kann?
Gautera!
Grüße aus Biberach Riss,
Candid Dauth
Hallo,
für alle, die das Thema interessiert: da hat sich einmal wieder ein Entwickler viele Gedanken und viel Arbeit gemacht und seine Lösung offen im Internet präsentiert. Unter http://lojjic.net/script-library/IEtoW3C-test.html findet Ihr ein Script, welches dafür sorgt, daß auch der IE mit den W3C-konformen Event-Funktionen umgehen kann - und eben auch mit benutzerdefinierten Events.
Ich muß mir das Ganze noch genau anschauen, um es zu verstehen. Auf jeden Fall funktioniert es.
Der Quellcode steht unter der MPL ("Mozilla Public Licence"), deren Bedingungen ich mir auch erst noch durchlesen muß (oder kennt die hier jemand?).
Ciao,
Andreas