프로그래밍/c#

c# 에서 javascript 바인딩하는 방법1

소행성왕자 2020. 10. 6. 13:28

 

결과를 반환하지 않는 JavaScript 메소드 호출

참고

https://github.com/cefsharp/CefSharp/wiki/General-Usage#javascript-integration

javascript 실행은 V8Context 내에서만 실행할수 있습니다.

JavaScript 실행에 몇가지 알아야 되는점

.스크립트는 프레임 수준에서 실행되며 모든 페이지에는 하나 이상의 프레임 ( MainFrame)이 있습니다.

.프레임에 JavaScript가 포함되어 있지 않으면 V8Context생성 되지 않습니다

.프레임이 로드 된 후 스크립트를 실행하는 컨텍스트가 없는 프레임의 경우를 사용하여 V8Context를 생성 할 수 있습니다 IFrame.ExecuteJavaScriptAsync

페이지 로드가 완료되면 배경색을 red 로 변경.

//페이지로드가 완료 될 때까지 기다립니다 (모든 리소스가로드되고 렌더링이 계속 진행될 수 있음).

browser.LoadingStateChanged += (sender, args) =>

{

   //Wait for the Page to finish loading

   if (args.IsLoading == false)

   {

       browser.ExecuteScriptAsync("alert('All Resources Have Loaded');");

       browser.ExecuteScriptAsync("document.body.style.background = 'red';");

   }

};

MainFrame 로드되면 배경색을 blue 로 변경 과 javascript aa() 메소드 호출

// MainFrame 로드를 완료 할 때까지 기다립니다.

browser.FrameLoadEnd += (sender, args) =>

{

   //Wait for the MainFrame to finish loading

   if (args.Frame.IsMain)

   {

       args.Frame.ExecuteJavaScriptAsync("alert('MainFrame finished loading');");

       browser.ExecuteScriptAsync("document.body.style.background = 'blue';");

       browser.ExecuteScriptAsync("aa();");

   }

};

웹페이지의 Javascript

<script>

function aa() {

   alert("aaaaaaa");

}

</script>​