2011-11-29 3 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 통해). 매번 요소 ScriptNotify을 탭하면 탭 요소의 태그 이름을보고하는 WebBrowser이 호출되어야합니다.

브라우저 컨트롤에 맞춰 IsScriptEnabled을 설정했는지 확인하십시오.

1

너는 the ScriptNotify Event에서 뭔가를 만들어야 할 것 같은데.

그 시점에서 JavaScript 이벤트 핸들러를 평소대로 등록 할 것이지만 해당 이벤트 핸들러는 window.external.notify("someMessageToHandle");을 호출하게됩니다. 그런 다음 적절하게 통화를 라우팅해야합니다.

JavaScript 이벤트 처리기를 페이지에 직접 추가 할 수없는 경우 WebBrowserControl.InvokeScript을 사용하여 추가 할 수 있습니다.

관련 문제