在页面开始加载/执行之前,我需要对每个页面更改执行一些操作。
首先,我尝试使用-webView:shouldStartLoadWithRequest:
,但这不起作用,因为它也会调用XHR请求和iframe请求。
其次,我尝试使用-webViewDidStartLoad:
并将webView.request
与之前的值进行比较,看看它是否发生了变化。这不起作用,因为webView.request
仅在通话后的某个时间更新。
还有什么想法?
答案 0 :(得分:10)
webView中的请求对象:shouldStartLoadWithRequest:有两个属性,
BOOL iframe = ![request.URL isEqual:request.mainDocumentURL];
如果要加载的URL不等于mainDocumentURL,则表示您正在加载除主文档之外的其他内容(可能是iFrame)。
答案 1 :(得分:1)
您是否尝试过使用KVO来观察UIWebView.request
?
答案 2 :(得分:0)
创建一个类别或扩展覆盖loadRequest的UIWebview,首先执行操作,然后执行标准的loadRequest。