본문 바로가기

쓸만한 주저리

C# WebView(WebBrowser) 안의 javascript에서 C# 함수 부르기

반응형

// Object used for communication from JS -> WPF

  [System.Runtime.InteropServices.ComVisibleAttribute(true)]

  public class HtmlInteropClass {

    public void SetAValue(string title) {

//외부 함수 전용 공간을 만들어서 그쪽으로 옮겨서 처리한다.

      var ef=new ExternalFunction.EF_1_1();

      ef.SetAValueEF(title);

    }

  }

js에서 c# 함수를 호출하는 class

MainWindow Class에 선언한다.


public MainWindow() {

      InitializeComponent();

      //IE 최신판으로 변경

      SetBrowserEmulationMode();

      //자바스크립트에서 C# 호출

      MainBrowser.ObjectForScripting=new HtmlInteropClass();

    }

MainWindow를 초기화할 때 선언한 class를 외부 함수 class로 지정해 준다.


<button onclick="window.external.SetAValue('12.0')">입력 시험</button>

html 파일에서는 이렇게 호출하면 된다.

window.external.함수이름(전달값)

함수는 HtmlInteropClass 안에 있는 함수를 쓴다.



출처 : https://blogs.msdn.microsoft.com/wpf/2011/05/27/how-does-wpf-webbrowser-control-handle-window-external-notify/

출처의 설명은 별 도움이 안되었고, 첨부되어 있는 소스 파일이 도움이 되었다.

혹시 없어질 때를 대비해서 여기도 첨부해 뒀다.

WpfHostingWebOCHostingSL.zip


반응형