1. Window.Event
【Analyse Anweisungen】 Sehen Sie sich zuerst ein Stück Code an
Die Codekopie lautet wie folgt:
Funktion ET ()
{
Alert (Ereignis); // dh: [Objekt]
}
Das Ergebnis des obigen Code, der in IE ausgeführt wird, ist [Objekt], aber er kann nicht in Firefox ausgeführt werden.
Da das Ereignis direkt als Eigenschaft eines Fensterobjekts im IE verwendet werden kann, aber in Firefox wird das W3C -Modell verwendet, das Ereignisse durch die Methode zum Übergeben von Parametern verbreitet, dh Sie müssen eine Ereignisantwort -Schnittstelle für Ihre Funktion bereitstellen.
[Kompatibilitätsverarbeitung] Fügen Sie das Ereignisurteil hinzu und erhalten Sie das richtige Ereignis gemäß dem Browser:
Die Codekopie lautet wie folgt:
Funktion ET ()
{
evt = evt? evt: (window.event? window.event: null);
// kompatibel mit IE und Firefox
Alarm (EVT);
}
2. Akquisition des Tastaturwerts
[Analyse Hinweis] Die Methoden zum Erhalten von Tastaturwerten aus IE und Firefox sind unterschiedlich. Es kann verstanden werden, dass das Ereignis unter Firefox dem Ereignis entspricht. Für die Unterschiede des anderen finden Sie unter "Kompatibilitätstest für KeyCode, die und in Tastaturereignissen CharCode Charcode".
【Kompatible Verarbeitung】】
Kopieren Sie den Code
Die Codekopie lautet wie folgt:
Funktion myKeypress (evt) {
// kompatibel mit IE und Firefox, um ein Keyboarde -Objekt zu erhalten
evt = (evt)? EVT: ((window.event)? window.event: "")
// kompatibel mit IE und Firefox, um den Schlüsselwert des TastatureVent -Objekts zu erhalten
var key = evt.keycode? evt.keycode: evt.which;
if (evt.ctrlkey && (key == 13 || key == 10)) {
// Strg und Eintritt wurden gleichzeitig gedrückt
// etwas tun;
}
}
3.. Ereignisquelle erhalten
[Analyse Hinweis] Bei der Verwendung von Ereignisdelegierten können wir bestimmen, aus welchem Element das Ereignis durch die Ereignisquellenerfassung stammt. In IE verfügt das Ereignisobjekt jedoch über eine Srcelement -Eigenschaft, aber keine Zieleigenschaft. In Firefox verfügt das gleichmäßige Objekt über eine Zieleigenschaft, aber keine Srcelement -Eigenschaft.
【Kompatible Verarbeitung】】
Die Codekopie lautet wie folgt:
ele = function (evt) {// Erfassen Sie das Objekt, dass das aktuelle Ereignis wirkt
evt = evt || window.event;
Zurückkehren
(obj = event.srcelement? event.srcelement: event.target;);
}
4. Ereignisüberwachung
[Analyse Hinweis] In Bezug auf das Hören und Verarbeitung von Ereignissen bietet der IE zwei Schnittstellen: Anhang und Ablösung, während Firefox AddEventListener und REMEGEVENTLITELERSerer bereitstellt.
[Kompatibilitätsverarbeitung] Die einfachste Kompatibilitätsverarbeitung besteht darin, diese beiden Schnittstellensätze zu verkapulieren:
Die Codekopie lautet wie folgt:
Funktion AddEvent (Elem, Eventname, Handler) {
if (Elem.attachevent) {
Elem.attachEvent ("on" + Ereignisname, function () {
Handler.Call (Elem)});
// Verwenden Sie den Callback -Funktion call (). Lassen Sie diesen Punkt auf Elem dienen
} else if (elem.addeventListener) {
Elem.AdDeVentListener (Eventname, Handler, Falsch);
}
}
Funktion removentEvent (Elem, Ereignisname, Handler) {
if (Elem.detachevent) {
Elem.DetACHEvent ("on" + Ereignisname, function () {
Handler.Call (Elem)});
// Verwenden Sie den Callback -Funktion call (). Lassen Sie diesen Punkt auf Elem dienen
} else if (Elem.removeEventListener) {
Elem.RemoveEventListener (Eventname, Handler, Falsch);
}
}
Es ist zu beachten, dass dies unter Firefox in der Ereignisbehandlungsfunktion auf das angehaltene Element selbst zeigt, aber im IE können Sie den Callback -Funktionsaufruf verwenden, um den aktuellen Kontext auf das angehörte Element hinweisen zu lassen.
5. Maus Position
[Analyse Hinweis] Unter IE hat das gleichmäßige Objekt X- und Y -Attribute, aber keine Pagex- und Seitenattribute; Unter Firefox verfügt das gleichmäßige Objekt über PageX- und Seitenattribute, aber keine X- und Y -Attribute.
[Kompatibilitätsverarbeitung] Verwenden Sie MX (mx = event.x? Event.x: event.pagex;), um Event.x unter IE oder Event.Pagex unter Firefox zu ersetzen. Die absolute Position muss für komplexe Punkte berücksichtigt werden.
Die Codekopie lautet wie folgt:
Funktion getabspoint (e) {
var x = e.offsetleft, y = e.offsettop;
while (e = e.offsetParent) {
x += e.offsetleft;
y += e.offsettop;
}
alert ("x:" + x + "," + "y:" + y);
}