2013-11-26 61 views
1

我正在研究一個涉及相當龐大且不可動搖的代碼庫的項目。在jQuery可拖動小部件中有幾個隱藏的div,當某些菜單按鈕被點擊時顯示。其中一個包含許多表單元素,包括輸入和選擇框。表單元素無法集中

問題是,單擊這些表單元素中的任何一個都沒有任何作用。如果我向onclick事件,onmousedown事件或onmouseup事件添加警報,它們會觸發。但是,聚焦事件不會觸發。我可以通過Tab鍵來關注元素。我的猜測是有一個「preventDefault」或「return false」導致這個問題,但我已經搜索了幾乎10000行的JQuery/JS幾次,發現沒有任何與這個問題有關;代碼庫太大,無法逐行讀取,除非是最後的努力。我試過在這個主題中搜索很多建議:HTML input fields does not get focus when clicked

我不知道下一步該做什麼。我以前從來沒有見過這樣的事情。有沒有辦法查看給定元素的所有事件列表?我在Chrome或FF檢查器中找不到此選項。在這些瀏覽器中有沒有辦法記錄所有觸發的事件及其結果?我嘗試以下,但回來只是一個KEYUP或改變(關於這一點我就根據點擊)事件:

console.log($(this).data('events')) 

一個人怎麼排查問題,例如呢?

回答

2

有兩件事可能有幫助。

在瀏覽器 - >右鍵點擊 - >檢查元素和右手邊有一個「事件監聽器」標籤,顯示一切工作該元素上。
(你可能會看到很多其他的Chrome擴展結合事件的一切,去無痕或禁用所有的擴展,而您調試問題將清除高達)

另一種方式來捕捉事件是:

在Chrome中 - >F12 - >來源選項卡 - >和右邊的按下暫停按鈕| |,然後從此開始執行的第一個JavaScript將在適當的代碼中的行上中斷執行,以便您可以逐步完成。

+1

謝謝大衛;你是一個救生員。根據這個事件,我可以追蹤到JQuery取消事件:http://bugs.jqueryui.com/ticket/5466。我通過調整我的對話框的z-index來解決問題,因爲修改jQuery src不是一個選項。 – Nicholas