iOS2013. 6. 28. 19:35


iOS UIWebView Page loading flow 테스트 결과

didStartLoad delegate에서 webVIew.request.URL은 이전 페이지의 URL이거나 비어있다.

페이지로딩이 리다이렉트될때

 1. shouldStartLoading (requestURL is target page)

 2. didStartLoading

 3. shouldStartLoading (requestURL is redirect target)

 4. didFinishLoad (request.URL is redirect target)

 Note : 두번째 didStartLoading이 호출되지 않는다.


iframe을 포함한 페이지의 로딩시

 1. shouldStartLoading (requestURL is main page)

 2. didStartLoading

 3. shouldStartLoading (requestURL is one of the iframes)

 4. didStartLoading

 5. didFinishLoad

 6. didFinishLoad

Note didFinishLoad가 어떤 didStartLoad에 대응되는지 알 방법이 없음.


window.history.go(-1)가 호출될때

 1. didStartLoading

 2. didFinishLoad

 Note shouldStartLoading가 호출되지 않는다.  iOS6에서는 호출된다.


location.reload()호출시

 1. shouldStartLoading

 2. didStartLoading

 3. didFinishLoad


iframe페이지 로딩이 실패한 경우:

 1. shouldStart (main page)

 2. didStart

 3. shouldStart (iframe)

 4. didStart

 5. didFailWithError

 6. didFinish


잘못된 URL로 인해 iframe로딩이 실패한 경우

 1. shouldStart (main page)

 2. didStart

 3. shouldStart (iframe)

 5. didFailWithError

 6. didFinish

didStart가 누락된다. 해결하려면 shouldStart에서 URL을 체크하고 문제가 있으면 NO를 리턴하면 된다.


잘못된 URL접근인 경우

 1. shouldStart (main page)

 2. didFailWithError


Posted by 삼스