2012-01-24 1 views
1

私はcapybara-webkitを使用しており、DOM内の要素のclickイベントにバインドされたイベントハンドラを取得したいと考えています。ネイティブのQtWebKit呼び出しを使用しても、RubyでWebkitドライバを使用してそれを行う方法を理解するのにはおそらく十分なはずです。私が抱えている課題は、イベントハンドラがHTMLではなくJavaScriptでプログラムでバインドされていることです。これを行う方法に関するこれまでの検索は、QWebViewでイベントをクリックする方法や他の方法でトリガする方法で終わるようです。イベントハンドラ(つまり、実際の関数定義)、特にイベントにバインドされた匿名関数を、イベント自体を生成せずに調べる必要があります。どんな助けもありがとうございます。capybara-webkitまたはネイティブQtWebKitを使用してDOM要素のクリックハンドラを取得するにはどうすればよいですか?

+0

良い質問は、私はあなたどのようにわからないんだけどユーザーが要素をクリックして要素をクリックしたときにジェネリックjsを発射するような何かを行うことなく、何かを行うことなく、それを行います。もしそれがあなたに役立つでしょうが、['QWebElement'](http:// developer。 qt.nokia.com/doc/qt-4.8/qwebelement.html)。 'QWebView-> page() - > currentFrame() - > documentElement()'でドキュメントのルートの 'QWebElement'を得ることができます。 – sjwarner

答えて

0

任意のJavascriptを実行し、結果をpage.execute_scriptで返すことができます。ここでは、イベントハンドラに内省に完全な答えがあります

page.execute_script(<<-JAVASCRIPT) 
    var handlers = $('.some-selector').data("events").click; 
    jQuery.each(handlers, function(key, handler) { 
    console.log(handler); 
    }); 
JAVASCRIPT 

:対象のイベントハンドラはjQueryのを使用してバインドされている場合は、これはそれらを一覧表示されますHow to find event listeners on a DOM node when debugging or from the JavaScript code?

関連する問題