1. window.event
【คำแนะนำการวิเคราะห์】ดูที่รหัสหนึ่งก่อน
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่น ET ()
-
Alert (Event); // IE: [Object]
-
ผลลัพธ์ของรหัสข้างต้นที่ทำงานอยู่ใน IE คือ [วัตถุ] แต่ไม่สามารถทำงานใน Firefox ได้
เนื่องจากเหตุการณ์สามารถใช้โดยตรงเป็นคุณสมบัติของวัตถุหน้าต่างใน IE แต่ใน Firefox แบบจำลอง W3C ถูกใช้ซึ่งเผยแพร่เหตุการณ์ผ่านวิธีการผ่านพารามิเตอร์นั่นคือคุณต้องจัดเตรียมอินเทอร์เฟซตอบสนองเหตุการณ์สำหรับฟังก์ชั่นของคุณ
[การประมวลผลความเข้ากันได้] เพิ่มการตัดสินของเหตุการณ์และรับเหตุการณ์ที่ถูกต้องตามเบราว์เซอร์:
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่น ET ()
-
evt = evt? evt: (window.event? window.event: null);
// เข้ากันได้กับ IE และ Firefox
การแจ้งเตือน (EVT);
-
2. การได้มาของค่าคีย์บอร์ด
[หมายเหตุวิเคราะห์] วิธีการรับค่าแป้นพิมพ์จาก IE และ Firefox นั้นแตกต่างกัน สามารถเข้าใจได้ว่าเหตุการณ์ที่อยู่ภายใต้ Firefox นั้นเทียบเท่ากับเหตุการณ์ KEYCODE ภายใต้ IE สำหรับความแตกต่างของกันและกันโปรดดูที่ "การทดสอบความเข้ากันได้สำหรับ KYCODE ซึ่งและ charcode ในเหตุการณ์แป้นพิมพ์"
【การประมวลผลที่เข้ากันได้】
คัดลอกรหัส
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่น mykeypress (evt) {
// เข้ากันได้กับ IE และ Firefox เพื่อรับ KeyboardEvent Object
evt = (evt)? evt: ((window.event)? window.event: "")
// เข้ากันได้กับ IE และ Firefox เพื่อรับค่าคีย์ของวัตถุ KeyboardEvent
var key = evt.keycode? evt.keycode: evt.which;
if (evt.ctrlkey && (key == 13 || key == 10)) {
// ctrl และ Enter ถูกกดในเวลาเดียวกัน
// ทำอะไรบางอย่าง;
-
-
3. การรับแหล่งเหตุการณ์
[หมายเหตุการวิเคราะห์] เมื่อใช้ผู้แทนเหตุการณ์เราสามารถกำหนดองค์ประกอบที่เหตุการณ์มาจากการได้มาของแหล่งที่มาของเหตุการณ์ อย่างไรก็ตามใน IE วัตถุเหตุการณ์มีคุณสมบัติ SRCELEMENT แต่ไม่มีคุณสมบัติเป้าหมาย ใน Firefox วัตถุที่สม่ำเสมอมีคุณสมบัติเป้าหมาย แต่ไม่มีคุณสมบัติ srcelement
【การประมวลผลที่เข้ากันได้】
การคัดลอกรหัสมีดังนี้:
ele = function (evt) {// จับภาพวัตถุที่เหตุการณ์ปัจจุบันทำหน้าที่
evt = evt || window.event;
กลับ
(obj = event.srcelement? event.sreclement: Event.target;);
-
4. การตรวจสอบเหตุการณ์
[หมายเหตุการวิเคราะห์] ในแง่ของการฟังเหตุการณ์และการประมวลผล IE ให้สองอินเทอร์เฟซ: AttachEvent และ Detachevent ในขณะที่ Firefox ให้ AddEventListener และ RemoveVentListener
[การประมวลผลความเข้ากันได้] การประมวลผลความเข้ากันได้ที่ง่ายที่สุดคือการห่อหุ้มอินเตอร์เฟสทั้งสองชุดนี้:
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่น addevent (elem, eventname, handler) {
if (elem.attachevent) {
elem.attachevent ("on" + eventname, function () {
handler.call (elem)});
// ใช้การเรียกใช้ฟังก์ชันการโทรกลับ () ที่นี่ให้จุดนี้ไปที่ elem
} อื่นถ้า (elem.addeventListener) {
Elem.addeventListener (EventName, Handler, False);
-
-
ฟังก์ชั่น remverevent (elem, eventname, handler) {
if (elem.detachevent) {
elem.detachevent ("on" + eventname, function () {
handler.call (elem)});
// ใช้การเรียกใช้ฟังก์ชันการโทรกลับ () ที่นี่ให้จุดนี้ไปที่ elem
} อื่นถ้า (elem.removeeVentListener) {
Elem.removeeVentListener (EventName, Handler, False);
-
-
ควรสังเกตว่าภายใต้ Firefox สิ่งนี้ในฟังก์ชั่นการจัดการเหตุการณ์ชี้ไปที่องค์ประกอบที่ฟังเอง แต่ใน IE คุณสามารถใช้การเรียกใช้ฟังก์ชันการเรียกกลับเพื่อให้บริบทปัจจุบันชี้ไปที่องค์ประกอบที่ฟัง
5. ตำแหน่งเมาส์
[หมายเหตุการวิเคราะห์] ภายใต้ IE วัตถุคู่มีแอตทริบิวต์ X และ Y แต่ไม่มีแอตทริบิวต์ PAGEX และ PAGEY; ภายใต้ Firefox วัตถุคู่มีแอตทริบิวต์ PAGEX และ PAGEY แต่ไม่มีแอตทริบิวต์ X และ Y
[การประมวลผลความเข้ากันได้] ใช้ MX (mx = event.x? event.x: event.pagex;) เพื่อแทนที่ event.x ภายใต้ IE หรือ event.pagex ภายใต้ Firefox ตำแหน่งสัมบูรณ์จะต้องได้รับการพิจารณาสำหรับคะแนนที่ซับซ้อน
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่น getAbspoint (e) {
var x = e.offsetleft, y = e.offsettop;
ในขณะที่ (e = e.offsetParent) {
x += e.offsetleft;
y += e.offsettop;
-
การแจ้งเตือน ("x:" + x + "," + "y:" + y);
-