Xamarin.Mac WebView FinishedLoad 이벤트의 오해와 진실
Xamarin.Mac으로 MacOS 애플리케이션을 개발할 때 WebKit.WebView를 사용하면 손쉽게 WebView를 지원할 수 있다.
원하는 Url로 이동하기
원하는 Url로 이동하는 것은 다음과 같이 할 수 있다.
MyWebView.MainFrame.LoadRequest(NSUrlRequest.FromUrl(NSUrl.FromString("http://naver.com/")));
페이지가 모두 로드 완료된 것을 확인하기
오해
WebKit.WebView에는 FinishedLoad란 이벤트가 있어 왠지
이걸 핸들링하면 http://naver.com/이 로드 완료되는 시점을 알 수 있을 것 같다. 그런데 이것이 오해다.
진실
실제로 http://naver.com/으로 이동하는 중에 FinishedLoad 이벤트가 발생하는 횟수는 필자가 이 글을 쓰는 2017년 1월 26일 현재 9회다.
아래와 같은 URL에 대한 FinishedLoad 이벤트가 발생한다.
- about:blank
- about:blank
- about:blank
- http://nv.veta.naver.com/dr?unit=002AT&da_dom_id=veta_timesquare
- http://nv1.veta.naver.com/dr?unit=002AN&tbsz=2&nrefreshx=1
- http://castbox.shopping.naver.com/sbox/main.nhn
- http://nv2.veta.naver.com/dr?unit=002AP&nrefreshx=1
- http://nv1.veta.naver.com/dr?unit=002AU&nrefreshx=1
- http://www.naver.com/
오해와 진실 사이에서 우리 Xamarin.Mac 개발자는 어떻게 해야 할까? 제대로 페이지 전체가 로드완료된 시점을 알려면 어떻게 해야할까? 그것은 다음 글에서 다루겠다.
위 내용을 쉽게 테스트 해볼 수 있도록 GitHub에 테스트코드를 포함한 프로젝트를 올려놓았다.