2

jQueryモバイルプロジェクトがあり、(ほとんどの)ポップアップを閉じるには、ポップアップ以外の領域を2回クリックする必要があります。このような場合、最初のクリックでURLアドレスバーから#&ui-state=dialogが削除され、実際にはポップアップが削除されるようです。Javascriptのデバッグ - 未知のクリックイベントをすべて破る方法

同じJSファイルの複数のインクルードをチェックしましたが、ソースを表示するときに1つのオカレンスしかありません。私はページを直接リフレッシュしているので、ナビゲーションからのJSファイルの2番目のインクルードもありません。私が知る限り(そして私はかなり確信しています)、ポップアップを引き起こすボタンにバインドされた複数のカスタムクリックイベントはありません(カスタムjQuery Mobileの背後にあるかもしれません)。

基本的に、すべてのクリックイベントをデバッグの一環としてリッスンして、何が起こっているのかを確認する方法はありますか?ポップアップを開くカスタムJSコードにブレークを追加しました。これは一度だけ実行されます。しかし、より多くのことが起こっていると私はそれがどこから来ているか、それを見つける方法がわからない。

+0

@MikeCの提案は、すべてのイベントを処理し、中断します。クリックイベントを除外するために 'if(cb = 'click'){{if(cb = 'click')}を追加しましたが、まだトラブルシューティングを支援するために探しているものを見つける方法がわかりません。 'console.log(this)'は情報量が多く、常にウィンドウオブジェクトを出力しているようです。私はいくつかの読書を行い、私がそれを理解できなければ、別の質問を投稿するでしょう。将来の訪問者の場合は、ここにリンクを提供します。 –

答えて

1

addEventListener methodをハイジャックすると、イベントが登録されたときを知ることができ、からにそのイベントを反応させることもできます。

var oldAddEventListener = EventTarget.prototype.addEventListener; 
EventTarget.prototype.addEventListener = function(cb) { 
    var customCB = function() { 
    console.log('Hijacked event handler'); 
    return cb.apply(this, arguments); 
    }; 

    console.log('Hijacked add event listener'); 
    return oldAddEventListener.apply(this, arguments); 
}; 

あなたはごとイベントをキャプチャしたい場合は

、あなたが他のコードを追加する前にこのコードで読み込むことを確認してください。

ElementaddEventListenerからEventTargetに継承されたためです。このメソッドをプロトタイプで上書きすることにより、イベントリスナをアタッチするときに、すべてElementがカスタムメソッドを使用するようになります。

関連する問題