簡體   English   中英

如何找到以編程方式觸發的 Javascript 事件的起源?

[英]How can I find the origin of a Javascript event which was fired programmatically?

我正在嘗試調試在提交按鈕上按 Enter 最終會導致在該按鈕上觸發“點擊”事件的場景。 我只能假設 click 事件是以編程方式觸發的。 觸發點擊事件顯然是應用程序中的正確行為,但我需要追蹤它的起源,因為我遇到了一些跨瀏覽器問題。

我正在使用 jQuery 和 ExtJS,按鍵處理程序都首先通過 jQuery 路由,然后通過 Ext,然后到我們的代碼。 該按鈕是一個分機 object。 我已經遍歷了所有關鍵處理程序,並且沒有遇到任何 fireEvent('click') 實例或任何解釋 click 事件來自何處的實例。

我知道的事件按以下順序觸發:

  1. 按鍵
  2. 按鍵
  3. 點擊

如果我抑制對 keydown 和 keypress 的處理,單擊事件仍然會觸發。

點擊處理程序上的調用堆棧沒有告訴我事件來自哪里,所以我求助於搜索代碼庫並在以下實例上放置斷點:

  • 火災事件('點擊'
  • 觸發器('點擊'
  • 初始化事件(

還有什么我可以搜索的嗎? 是否有更好的策略來調試 Javascript 事件的相互作用?

jQuery 可以使用方法click()觸發點擊事件。 注意空括號。

無論如何,這都不是奇怪的行為。 無論是什么瀏覽器,它都是所有按鈕元素的默認行為。 AFAIK,如果您在按鈕上按 Enter 鍵,它不會觸發 keyup/keydown 事件,因為它們不存在於該 DOM 元素上。

在這種情況下觸發點擊事件是完全正常的。

我已經設置了一個示例來演示這一點......

http://jsfiddle.net/SMsQD/1/

當頁面加載時,按鈕將聚焦。 如果按回車鍵,則返回的 keyCode 為 0。默認情況下會觸發 click 事件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM