这个简单的代码
var iframe = document.createElement('iframe');
document.documentElement.appendChild(iframe);
由UIWebView stringByEvaluatingJavascriptFromString
注入
使用UIWebViewDelegate shouldStartLoadWithRequest
生成about:blank
的调用。有趣的是,mainDocumentURL
设置了注入时的文档。对我而言,这意味着我无论何时何时都无法注入此类代码 - 重新注册shouldStartLoadWithRequest
会明显打破很多事情。我可以拒绝所有about:blank
个请求(从NO
返回shouldStart...
),来自互联网的代码片段无能为力,但它几乎不是一个系统的解决方案。
为什么UIWebView
会出现这种令人困惑和无用的行为?
答案 0 :(得分:7)
由于您未在src
上设置iframe
属性,因此默认情况下会加载about:blank
。如果要避免此行为,可以在将iframe.setAttribute
添加到文档之前使用iframe
设置虚拟值,然后在shouldStartLoadWithRequest
中取消虚拟请求。