คุณบันทึกเหตุการณ์ทั้งหมดที่ยิงโดยองค์ประกอบใน jQuery ได้อย่างไร


96

ฉันต้องการเห็นเหตุการณ์ทั้งหมดที่เกิดจากไฟล์ ป้อนข้อมูลเมื่อผู้ใช้โต้ตอบกับเหตุการณ์นั้น ซึ่งรวมถึงสิ่งต่างๆเช่น:

  1. คลิกที่มัน
  2. คลิกปิดมัน
  3. แตะลงไป
  4. หลีกหนีจากมัน
  5. Ctrl+ CและCtrl+Vบนแป้นพิมพ์
  6. คลิกขวา -> วาง
  7. คลิกขวา -> ตัด
  8. คลิกขวา -> คัดลอก
  9. การลากและวางข้อความจากแอปพลิเคชันอื่น
  10. แก้ไขด้วย Javascript
  11. แก้ไขด้วยเครื่องมือดีบักเช่น Firebug

ฉันต้องการแสดงโดยใช้console.logไฟล์. เป็นไปได้ไหมใน Javascript / jQuery และถ้าเป็นเช่นนั้นฉันจะทำอย่างไร


คำถามของคุณน่าสนใจ แต่คุณพูดในความคิดเห็นว่า "สิ่งที่ฉันกำลังมองหาคือรายการเหตุการณ์ทั้งหมดที่ถูกไล่ออกดังนั้นฉันจึงรู้ว่ามีเหตุการณ์ใดบ้างที่ฉันจะพูดถึง" - ทำไมคุณไม่เพียง ถามว่า? doco ของ MSDN ค่อนข้างดีสำหรับสิ่งนี้: msdn.microsoft.com/en-us/library/ms533051(v=VS.85).aspx - ไม่ใช่ทุกเหตุการณ์ในรายการที่ได้รับการสนับสนุนในเบราว์เซอร์ทั้งหมด แต่ถ้าคุณตรวจสอบ doco สำหรับ เหตุการณ์ "on_xyz_" จะแจ้งให้คุณทราบว่า "เหตุการณ์นี้กำหนดไว้ใน HTML 4.0" หรือ "ไม่มีมาตรฐานสาธารณะที่ใช้กับเหตุการณ์นี้" หรืออะไรก็ตาม
nnnnnn

คำตอบ:


66
$(element).on("click mousedown mouseup focus blur keydown change",function(e){
     console.log(e);
});

นั่นจะทำให้คุณได้รับข้อมูลจำนวนมาก (แต่ไม่ใช่ทั้งหมด) ในกรณีที่เหตุการณ์ถูกไล่ออก ... นอกเหนือจากการเข้ารหัสด้วยตนเองเช่นนี้ฉันไม่สามารถคิดวิธีอื่นที่จะทำ


แปลกที่ทั้งคุณและ Shawn สะกดผิดfunctionและในทางเดียวกัน :)
Daniel T.

1
ดูเหมือนว่าวิธีนี้จะผูกเหตุการณ์เนทีฟทั้งหมด ฉันเดาว่าไม่มีวิธีใดที่จะแสดงเหตุการณ์ที่กำหนดเองเช่นหากปลั๊กอินทำให้เหตุการณ์ที่กำหนดเองบางอย่างเริ่มทำงาน?
Daniel T.

2
ฉันยอมรับสิ่งนี้เป็นคำตอบ แต่คำตอบที่แท้จริงสำหรับคำถามของฉันคือ "ใช่และไม่ใช่" สิ่งที่ฉันกำลังมองหาคือรายการของเหตุการณ์ทั้งหมดที่ถูกไล่ออกดังนั้นฉันจึงรู้ว่ามีเหตุการณ์ใดบ้างที่ฉันจะเชื่อมต่อได้ ในกรณีนี้ผมสามารถมองเห็นเมื่อเหตุการณ์ที่เกิดขึ้นจะถูกไล่ออก แต่ผมต้องรู้ชื่อของมันก่อน
Daniel T.

3
@ โจเซฟ: เกี่ยวกับความคิดเห็นก่อนหน้านี้ของคุณ "โฟกัสไม่ใช่เหตุการณ์ที่เกิดขึ้นเอง" - อืม ... ใช่มันเป็นเรื่องที่เกิดขึ้นก่อนหน้า jQuery มานานแล้ว (และก่อนหน้า Chrome และ FF สำหรับเรื่องนั้น) นอกจากนี้คุณอาจต้องการเพิ่มลงblurในรายการกิจกรรมของคุณ
nnnnnn

3
monitorEvents (เอกสาร) คือคำตอบที่แท้จริง
neaumusic

213

ฉันไม่รู้ว่าทำไมไม่มีใครใช้สิ่งนี้ ... (อาจเป็นเพราะมันเป็นเพียงสิ่งที่ Webkit)

เปิดคอนโซล:

monitorEvents(document.body); // logs all events on the body

monitorEvents(document.body, 'mouse'); // logs mouse events on the body

monitorEvents(document.body.querySelectorAll('input')); // logs all events on inputs

7
ไม่ครอบคลุมเหตุการณ์ที่กำหนดเอง แต่ช่วยให้เข้าใจกลุ่มเหตุการณ์ได้ดี
sidonaldson

นี่คือคำตอบที่ถูกต้อง คุณไม่ต้องการใช้ console.log ในรหัสการผลิตสามารถใช้คอนโซลสำหรับการดีบักเหตุการณ์ได้ดี
neaumusic

1
Googleing monitorEventsไม่ให้ข้อมูลที่เกี่ยวข้องเกี่ยวกับเรื่องนี้และฉันสงสัยอย่างมากว่านี่ไม่ใช่มาตรฐาน
vsync

3
@vsync ลอง "monitorEvents" ในเครื่องหมายคำพูด เป็นส่วนหนึ่งของออบเจ็กต์คอนโซล แต่ขึ้นอยู่กับเบราว์เซอร์ เป็นเพียงเครื่องมือดีบักเนื่องจากขึ้นอยู่กับคอนโซล ... ดังนั้นการเป็นมาตรฐานจึงไม่เกี่ยวข้อง
sidonaldson

2
โปรดทราบว่าคุณสามารถใช้บางอย่างเช่นmonitorEvents($0, 'mouse');เพื่อบันทึกเหตุการณ์ทั้งหมดขององค์ประกอบที่ตรวจสอบ (คลิกขวา> "ตรวจสอบ") ( briangrinstead.com/blog/chrome-developer-tools-monitorevents )
rinogo

32

มีวิธีการทั่วไปที่ดีในการใช้คอลเล็กชัน. data ('events'):

function getEventsList($obj) {
    var ev = new Array(),
        events = $obj.data('events'),
        i;
    for(i in events) { ev.push(i); }
    return ev.join(' ');
}

$obj.on(getEventsList($obj), function(e) {
    console.log(e);
});

สิ่งนี้จะบันทึกทุกเหตุการณ์ที่ถูกผูกไว้กับองค์ประกอบโดย jQuery เมื่อเหตุการณ์เฉพาะนี้เริ่มทำงาน รหัสนี้ค่อนข้างมีประโยชน์สำหรับฉันหลายครั้ง

Btw: หากคุณต้องการเห็นเหตุการณ์ที่เป็นไปได้ทั้งหมดที่เกิดขึ้นบนวัตถุให้ใช้ firebug: เพียงคลิกขวาที่องค์ประกอบ DOM ในแท็บ html แล้วเลือก "บันทึกเหตุการณ์" จากนั้นทุกเหตุการณ์จะเข้าสู่คอนโซล (บางครั้งก็น่ารำคาญเล็กน้อยเพราะบันทึกทุกการเคลื่อนไหวของเมาส์ ... )


19
$('body').on("click mousedown mouseup focus blur keydown change mouseup click dblclick mousemove mouseover mouseout mousewheel keydown keyup keypress textInput touchstart touchmove touchend touchcancel resize scroll zoom focus blur select change submit reset",function(e){
     console.log(e);
}); 

3
คำตอบที่สมบูรณ์ที่สุด
leymannx

12

ฉันรู้ว่าคำตอบนี้ได้รับการยอมรับแล้ว แต่ฉันคิดว่าอาจมีวิธีที่น่าเชื่อถือกว่าเล็กน้อยซึ่งคุณไม่จำเป็นต้องรู้ชื่อของงานก่อน สิ่งนี้ใช้ได้กับเหตุการณ์ดั้งเดิมเท่านั้นเท่าที่ฉันรู้ไม่ใช่เหตุการณ์ที่กำหนดเองที่สร้างขึ้นโดยปลั๊กอิน ฉันเลือกที่จะละเว้นการใช้ jQuery เพื่อทำให้สิ่งต่างๆง่ายขึ้นเล็กน้อย

let input = document.getElementById('inputId');

Object.getOwnPropertyNames(input)
  .filter(key => key.slice(0, 2) === 'on')
  .map(key => key.slice(2))
  .forEach(eventName => {
    input.addEventListener(eventName, event => {
      console.log(event.type);
      console.log(event);
    });
  });

ฉันหวังว่านี่จะช่วยทุกคนที่อ่านสิ่งนี้

แก้ไข

ดังนั้นฉันเห็นคำถามอื่นที่นี่ที่คล้ายกันดังนั้นข้อเสนอแนะอื่นที่จะทำดังต่อไปนี้:

monitorEvents(document.getElementById('inputId'));

นี่คือทางออกที่หรูหราที่สุดของพวง ฉันคิดว่าคงเป็นไปไม่ได้ที่จะค้นพบเหตุการณ์ที่กำหนดเองเนื่องจากสามารถส่งผ่าน dispatchEvent () ได้ แต่สิ่งนี้ครอบคลุมทุกอย่างในรูปแบบบิตโค้ดที่กะทัดรัดปราศจากการพึ่งพา
Roberto

10

กระทู้เก่านะรู้ยัง ฉันต้องการบางสิ่งเพื่อตรวจสอบเหตุการณ์และเขียนวิธีแก้ปัญหาที่มีประโยชน์ (ยอดเยี่ยม) นี้ คุณสามารถตรวจสอบเหตุการณ์ทั้งหมดด้วย hook นี้ (ในการเขียนโปรแกรม windows เรียกว่า hook) ตะขอนี้ไม่มีผลต่อการทำงานของซอฟต์แวร์ / โปรแกรมของคุณ

ในบันทึกของคอนโซลคุณจะเห็นสิ่งนี้:

บันทึกคอนโซล

คำอธิบายสิ่งที่คุณเห็น:

ในบันทึกของคอนโซลคุณจะเห็นเหตุการณ์ทั้งหมดที่คุณเลือก (ดูด้านล่าง"วิธีใช้" ) และแสดงประเภทออบเจ็กต์, ชื่อคลาส, id, <: name of function>, <: eventname> การจัดรูปแบบของวัตถุเป็นเหมือน css

เมื่อคุณคลิกปุ่มหรือเหตุการณ์ที่ผูกไว้คุณจะเห็นสิ่งนั้นในบันทึกของคอนโซล

รหัสที่ฉันเขียน:

function setJQueryEventHandlersDebugHooks(bMonTrigger, bMonOn, bMonOff)
{
   jQuery.fn.___getHookName___ = function()    
       {
          // First, get object name
         var sName = new String( this[0].constructor ),
         i = sName.indexOf(' ');
         sName = sName.substr( i, sName.indexOf('(')-i );    

         // Classname can be more than one, add class points to all
         if( typeof this[0].className === 'string' )
         {
           var sClasses = this[0].className.split(' ');
           sClasses[0]='.'+sClasses[0];
           sClasses = sClasses.join('.');
           sName+=sClasses;
         }
         // Get id if there is one
         sName+=(this[0].id)?('#'+this[0].id):'';
         return sName;
       };

   var bTrigger        = (typeof bMonTrigger !== "undefined")?bMonTrigger:true,
       bOn             = (typeof bMonOn !== "undefined")?bMonOn:true,
       bOff            = (typeof bMonOff !== "undefined")?bMonOff:true,
       fTriggerInherited = jQuery.fn.trigger,
       fOnInherited    = jQuery.fn.on,
       fOffInherited   = jQuery.fn.off;

   if( bTrigger )
   {
    jQuery.fn.trigger = function()
    {
     console.log( this.___getHookName___()+':trigger('+arguments[0]+')' );
     return fTriggerInherited.apply(this,arguments);
    };
   }

   if( bOn )
   {
    jQuery.fn.on = function()
    {
     if( !this[0].__hooked__ ) 
     {
       this[0].__hooked__ = true; // avoids infinite loop!
       console.log( this.___getHookName___()+':on('+arguments[0]+') - binded' );
       $(this).on( arguments[0], function(e)
       {
         console.log( $(this).___getHookName___()+':'+e.type );
       });
     }
     var uResult = fOnInherited.apply(this,arguments);
     this[0].__hooked__ = false; // reset for another event
     return uResult;
    };
   }

   if( bOff )
   {
    jQuery.fn.off = function()
    {
     if( !this[0].__unhooked__ ) 
     {
       this[0].__unhooked__ = true; // avoids infinite loop!
       console.log( this.___getHookName___()+':off('+arguments[0]+') - unbinded' );
       $(this).off( arguments[0] );
     }

     var uResult = fOffInherited.apply(this,arguments);
     this[0].__unhooked__ = false; // reset for another event
     return uResult;
    };
   }
}

ตัวอย่างวิธีใช้:

ตรวจสอบเหตุการณ์ทั้งหมด:

setJQueryEventHandlersDebugHooks();

ตรวจสอบทริกเกอร์ทั้งหมดเท่านั้น:

setJQueryEventHandlersDebugHooks(true,false,false);

ตรวจสอบเหตุการณ์ ON ทั้งหมดเท่านั้น:

setJQueryEventHandlersDebugHooks(false,true,false);

ตรวจสอบปิดทั้งหมด unbinds เท่านั้น:

setJQueryEventHandlersDebugHooks(false,false,true);

หมายเหตุ / ประกาศ:

  • ใช้สำหรับการดีบักเท่านั้นปิดเมื่อใช้ในเวอร์ชันสุดท้ายของผลิตภัณฑ์
  • หากคุณต้องการดูเหตุการณ์ทั้งหมดคุณต้องเรียกใช้ฟังก์ชันนี้โดยตรงหลังจากโหลด jQuery แล้ว
  • หากคุณต้องการดูเฉพาะเหตุการณ์น้อยลงคุณสามารถเรียกใช้ฟังก์ชันได้ตามเวลาที่ต้องการ
  • หากคุณต้องการเรียกใช้งานอัตโนมัติให้วาง () (); รอบ ๆ ฟังก์ชั่น

หวังว่าจะช่วยได้! ;-)


สวัสดี @AmirFo ขอบคุณที่พยายาม เนื่องจากคุณไม่ได้ให้ตัวอย่างสิ่งที่คุณได้ทำจึงไม่สามารถดูได้ว่าปัญหาอยู่ในโค้ดของคุณหรือของฉัน เนื่องจากมีคนอื่น ๆ ที่ใช้ตัวอย่างนี้จนประสบความสำเร็จจึงเป็นไปได้ว่าคุณทำอะไรผิดพลาด คุณได้ตรวจสอบรหัสของคุณว่ามีข้อผิดพลาดหรือไม่?
Codebeat

ไม่มีข้อผิดพลาด ฉันทริกเกอร์เหตุการณ์บางอย่าง แต่ไม่มีบันทึกปรากฏในคอนโซล! ฉันใช้ chrome เวอร์ชันล่าสุดใน ubuntu, linux
Amir Fo

@AmirFo: คุณลองใน Firefox ด้วยหรือไม่? jQuery รุ่นอะไร?
Codebeat

@AmirFo: คุณกระตุ้นเหตุการณ์ได้อย่างไร? คุณเชื่อมโยงเหตุการณ์ใด ๆ กับองค์ประกอบ DOM ก่อนที่จะทริกเกอร์หรือไม่
Codebeat

4

https://github.com/robertleeplummerjr/wiretap.js

new Wiretap({
  add: function() {
      //fire when an event is bound to element
  },
  before: function() {
      //fire just before an event executes, arguments are automatic
  },
  after: function() {
      //fire just after an event executes, arguments are automatic
  }
});

1
คุณสามารถให้ข้อมูลเพิ่มเติมเกี่ยวกับวิธีการทำงานและสิ่งนี้ได้หรือไม่ ฉันจะแนบเข้ากับองค์ประกอบได้อย่างไร
Josiah

สคริปต์นี้ปรับเปลี่ยนHTMLElement.prototype.addEventListenerและอาจไม่ควรใช้ในการผลิต แต่มันเป็นความช่วยเหลือที่ดีสำหรับฉันสำหรับวัตถุประสงค์ในการดีบัก
GünterZöchbauer

1
สิ่งนี้ใช้ไม่ได้กับ 1 องค์ประกอบมันใช้ได้กับทุกองค์ประกอบ มันแตะเข้าไปในตัวจัดการเหตุการณ์ของหน้าต่างและรับฟังทุกสิ่งที่เกิดขึ้น ใช้งานได้กับตัวจัดการเหตุการณ์ดั้งเดิมและ jQuery
Robert Plummer

2

เพียงเพิ่มสิ่งนี้ลงในหน้าและไม่ต้องกังวลอื่น ๆ จะจัดการส่วนที่เหลือให้คุณ:

$('input').live('click mousedown mouseup focus keydown change blur', function(e) {
     console.log(e);
});

คุณยังสามารถใช้ console.log ('Input event:' + e.type) เพื่อให้ง่ายขึ้น


3
แปลกที่คุณและโจเซฟทั้งสองสะกดผิดfunctionและในทางเดียวกัน :)
Daniel T.

ฮ่า ๆ เดี๋ยวก่อน ... เขาเขียนออกมาแล้วและฉันก็ต้องปรับปรุง ;)
Shawn Khameneh

1
อย่าให้ฉันแสดงความคิดเห็นคำตอบอื่นคุณสามารถใช้. data ("events") เพื่อดึงรายการเหตุการณ์
Shawn Khameneh

มันทำงานอย่างไร? ฉันลอง$('input').data('events')แล้วและกลับไม่ได้กำหนด
Daniel T.

ซึ่งจะส่งคืนเหตุการณ์ที่ถูกผูกไว้ในปัจจุบันซึ่งรวมถึงเหตุการณ์ที่กำหนดเอง หากไม่มีเหตุการณ์ใดผูกมัดมันจะกลับมาไม่ได้กำหนด
Shawn Khameneh

1

ขั้นตอนที่ 1: ตรวจสอบeventsการHTML elementบนdeveloper console:

ป้อนคำอธิบายภาพที่นี่

ขั้นตอนที่ 2: ฟังสิ่งที่eventsเราต้องการบันทึก:

$(document).on('ch-ui-container-closed ch-ui-container-opened', function(evt){
 console.log(evt);
});

โชคดี...


1

ฉันเพิ่งพบและแก้ไขตัวอย่างข้อมูลนี้จากโพสต์ SO ที่มีอยู่ซึ่งฉันไม่สามารถหาได้อีก แต่พบว่ามีประโยชน์มาก

// specify any elements you've attached listeners to here
const nodes = [document]

// https://developer.mozilla.org/en-US/docs/Web/Events
const logBrowserEvents = () => {
  const AllEvents = {
    AnimationEvent: ['animationend', 'animationiteration', 'animationstart'],
    AudioProcessingEvent: ['audioprocess'],
    BeforeUnloadEvent: ['beforeunload'],
    CompositionEvent: [
      'compositionend',
      'compositionstart',
      'compositionupdate',
    ],
    ClipboardEvent: ['copy', 'cut', 'paste'],
    DeviceLightEvent: ['devicelight'],
    DeviceMotionEvent: ['devicemotion'],
    DeviceOrientationEvent: ['deviceorientation'],
    DeviceProximityEvent: ['deviceproximity'],
    DragEvent: [
      'drag',
      'dragend',
      'dragenter',
      'dragleave',
      'dragover',
      'dragstart',
      'drop',
    ],
    Event: [
      'DOMContentLoaded',
      'abort',
      'afterprint',
      'beforeprint',
      'cached',
      'canplay',
      'canplaythrough',
      'change',
      'chargingchange',
      'chargingtimechange',
      'checking',
      'close',
      'dischargingtimechange',
      'downloading',
      'durationchange',
      'emptied',
      'ended',
      'error',
      'fullscreenchange',
      'fullscreenerror',
      'input',
      'invalid',
      'languagechange',
      'levelchange',
      'loadeddata',
      'loadedmetadata',
      'noupdate',
      'obsolete',
      'offline',
      'online',
      'open',
      'open',
      'orientationchange',
      'pause',
      'play',
      'playing',
      'pointerlockchange',
      'pointerlockerror',
      'ratechange',
      'readystatechange',
      'reset',
      'seeked',
      'seeking',
      'stalled',
      'submit',
      'success',
      'suspend',
      'timeupdate',
      'updateready',
      'visibilitychange',
      'volumechange',
      'waiting',
    ],
    FocusEvent: [
      'DOMFocusIn',
      'DOMFocusOut',
      'Unimplemented',
      'blur',
      'focus',
      'focusin',
      'focusout',
    ],
    GamepadEvent: ['gamepadconnected', 'gamepaddisconnected'],
    HashChangeEvent: ['hashchange'],
    KeyboardEvent: ['keydown', 'keypress', 'keyup'],
    MessageEvent: ['message'],
    MouseEvent: [
      'click',
      'contextmenu',
      'dblclick',
      'mousedown',
      'mouseenter',
      'mouseleave',
      'mousemove',
      'mouseout',
      'mouseover',
      'mouseup',
      'show',
    ],
    // https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Mutation_events
    MutationNameEvent: ['DOMAttributeNameChanged', 'DOMElementNameChanged'],
    MutationEvent: [
      'DOMAttrModified',
      'DOMCharacterDataModified',
      'DOMNodeInserted',
      'DOMNodeInsertedIntoDocument',
      'DOMNodeRemoved',
      'DOMNodeRemovedFromDocument',
      'DOMSubtreeModified',
    ],
    OfflineAudioCompletionEvent: ['complete'],
    OtherEvent: ['blocked', 'complete', 'upgradeneeded', 'versionchange'],
    UIEvent: [
      'DOMActivate',
      'abort',
      'error',
      'load',
      'resize',
      'scroll',
      'select',
      'unload',
    ],
    PageTransitionEvent: ['pagehide', 'pageshow'],
    PopStateEvent: ['popstate'],
    ProgressEvent: [
      'abort',
      'error',
      'load',
      'loadend',
      'loadstart',
      'progress',
    ],
    SensorEvent: ['compassneedscalibration', 'Unimplemented', 'userproximity'],
    StorageEvent: ['storage'],
    SVGEvent: [
      'SVGAbort',
      'SVGError',
      'SVGLoad',
      'SVGResize',
      'SVGScroll',
      'SVGUnload',
    ],
    SVGZoomEvent: ['SVGZoom'],
    TimeEvent: ['beginEvent', 'endEvent', 'repeatEvent'],
    TouchEvent: [
      'touchcancel',
      'touchend',
      'touchenter',
      'touchleave',
      'touchmove',
      'touchstart',
    ],
    TransitionEvent: ['transitionend'],
    WheelEvent: ['wheel'],
  }

  const RecentlyLoggedDOMEventTypes = {}

  Object.keys(AllEvents).forEach((DOMEvent) => {
    const DOMEventTypes = AllEvents[DOMEvent]

    if (Object.prototype.hasOwnProperty.call(AllEvents, DOMEvent)) {
      DOMEventTypes.forEach((DOMEventType) => {
        const DOMEventCategory = `${DOMEvent} ${DOMEventType}`

        nodes.forEach((node) => {
          node.addEventListener(
            DOMEventType,
            (e) => {
              if (RecentlyLoggedDOMEventTypes[DOMEventCategory]) return

              RecentlyLoggedDOMEventTypes[DOMEventCategory] = true

              // NOTE: throttle continuous events
              setTimeout(() => {
                RecentlyLoggedDOMEventTypes[DOMEventCategory] = false
              }, 1000)

              const isActive = e.target === document.activeElement

              // https://developer.mozilla.org/en-US/docs/Web/API/DocumentOrShadowRoot/activeElement
              const hasActiveElement = document.activeElement !== document.body

              const msg = [
                DOMEventCategory,
                'target:',
                e.target,
                ...(hasActiveElement
                  ? ['active:', document.activeElement]
                  : []),
              ]

              if (isActive) {
                console.info(...msg)
              }
            },
            true,
          )
        })
      })
    }
  })
}
logBrowserEvents()
// export default logBrowserEvents

1
function bindAllEvents (el) {
  for (const key in el) {
      if (key.slice(0, 2) === 'on') {
          el.addEventListener(key.slice(2), e => console.log(e.type));
      }
  }
}
bindAllEvents($('.yourElement'))

สิ่งนี้ใช้ ES6 เล็กน้อยเพื่อความสวยงาม แต่สามารถแปลได้อย่างง่ายดายสำหรับเบราว์เซอร์เดิมเช่นกัน ในฟังก์ชั่นที่แนบมากับตัวฟังเหตุการณ์ตอนนี้มันเพิ่งออกจากระบบว่าเหตุการณ์ประเภทใดเกิดขึ้น แต่นี่คือที่ที่คุณสามารถพิมพ์ข้อมูลเพิ่มเติมหรือใช้เคสสวิตช์ในe.typeคุณสามารถพิมพ์ข้อมูลเกี่ยวกับเหตุการณ์เฉพาะได้เท่านั้น


0

ต่อไปนี้เป็นวิธีที่ไม่ใช้ jquery ในการตรวจสอบเหตุการณ์ในคอนโซลด้วยโค้ดของคุณและไม่ต้องใช้ monitorEvents () เนื่องจากใช้ได้ใน Chrome Developer Console เท่านั้น คุณยังสามารถเลือกที่จะไม่ตรวจสอบเหตุการณ์บางอย่างได้โดยแก้ไขอาร์เรย์ no_watch

    function getEvents(obj) {
    window["events_list"] = [];
    var no_watch = ['mouse', 'pointer']; // Array of event types not to watch
    var no_watch_reg = new RegExp(no_watch.join("|"));

    for (var prop in obj) {
        if (prop.indexOf("on") === 0) {
            prop = prop.substring(2); // remove "on" from beginning
            if (!prop.match(no_watch_reg)) {
                window["events_list"].push(prop);
                window.addEventListener(prop, function() {
                    console.log(this.event); // Display fired event in console
                } , false);
            }
        }
    }
    window["events_list"].sort(); // Alphabetical order 

}

getEvents(document); // Put window, document or any html element here
console.log(events_list); // List every event on element
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.