6

This simple code

var iframe = document.createElement('iframe'); document.documentElement.appendChild(iframe);

injected by UIWebView stringByEvaluatingJavascriptFromString produces invocation of UIWebViewDelegate shouldStartLoadWithRequest with about:blank. Which interestingly still has mainDocumentURL set to the document that was there at the time of injection. For me it means that i can't inject such code whenever i want - reentry to shouldStartLoadWithRequest observably breaks a lot of things. I can reject all about:blank requests (returning NO from shouldStart...) and code snippets from the internets do it cluelessly, but it's hardly a systematic solution.

Any ideas why UIWebView has this confusing and useless behavior?

Pavel Zdenek
  • 7,146
  • 1
  • 23
  • 38

1 Answers1

7

Since you don't set a src attribute on your iframe, it will load about:blank by default. If you want to avoid this behavior you could set a dummy value using iframe.setAttribute before you add the iframe to the document and then cancel the dummy request in shouldStartLoadWithRequest.

Matthew Gertner
  • 4,487
  • 2
  • 32
  • 54