2011-11-29 4 views

答えて

4

はい。このコードは、私にとってはかなりうまく機能:それは(コーディング中に私を打つ)ジャスティンの答えに沿って行く

private void button1_Click(object sender, RoutedEventArgs e) 
    { 
     // first define a new function which serves as click handler 
     webBrowser1.InvokeScript("eval", "this.newfunc_eventHandler = function(e) { window.external.notify(e.srcElement.tagName); }"); 
     // attach function to body 
     webBrowser1.InvokeScript("eval", "document.body.addEventListener('click', newfunc_eventHandler, false);"); 
    } 

    private void webBrowser1_ScriptNotify(object sender, NotifyEventArgs e) 
    { 
     // this should be called every time you tap an element; the value should be its tag name 
     Debug.WriteLine(e.Value); 
    } 

。最初にクリックハンドラを定義し、それをページ本体に添付します(すべてInvokeScript経由)。タップされた要素のタグ名を報告するWebBrowserで呼び出す必要があるたびに、要素ScriptNotifyをタップする必要があります。

ブラウザコントロールに「IsScriptEnabled」が設定されていることを確認してください。

1

私はthe ScriptNotify Eventから何かを構築する必要があると思います。

その時点で、JavaScriptイベントハンドラを通常どおり登録しますが、そのイベントハンドラはwindow.external.notify("someMessageToHandle");を呼び出します。その後、適切に通話をルーティングする必要があります。

JavaScriptイベントハンドラをページに直接追加する機能がない場合は、代わりにWebBrowserControl.InvokeScriptを使用して追加できます。

関連する問題