如何在UIWebView中检测页面更改并在开始加载之前执行某些操作?

时间:2010-01-15 11:15:24

标签: iphone uiwebview

在页面开始加载/执行之前,我需要对每个页面更改执行一些操作。

首先,我尝试使用-webView:shouldStartLoadWithRequest:,但这不起作用,因为它也会调用XHR请求和iframe请求。

其次,我尝试使用-webViewDidStartLoad:并将webView.request与之前的值进行比较,看看它是否发生了变化。这不起作用,因为webView.request仅在通话后的某个时间更新。

还有什么想法?

3 个答案:

答案 0 :(得分:10)

webView中的请求对象:shouldStartLoadWithRequest:有两个属性,

BOOL iframe = ![request.URL isEqual:request.mainDocumentURL];

如果要加载的URL不等于mainDocumentURL,则表示您正在加载除主文档之外的其他内容(可能是iFrame)。

答案 1 :(得分:1)

您是否尝试过使用KVO来观察UIWebView.request

答案 2 :(得分:0)

创建一个类别或扩展覆盖loadRequest的UIWebview,首先执行操作,然后执行标准的loadRequest。