2010-01-15 29 views
8

我需要在页面开始加载/执行之前对每个页面进行一些更改。如何检测UIWebView中的页面更改并在开始加载之前执行某些操作?

首先,我尝试使用-webView:shouldStartLoadWithRequest:但这不起作用,因为它也被称为XHR请求和iframe请求。其次,我尝试使用-webViewDidStartLoad:并将webView.request与之前的值比较,以查看它是否发生了变化。这不起作用,因为webView.request仅在通话结束后才更新。

还有什么想法?

回答

0

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

+0

这将无法正常工作......页面也可以因为30x重定向,元重定向,JS设置window.location等而改变...... – 2010-01-22 11:32:40

+0

啊所以你要设置一个过滤器在stringByEvaulatingJavaScriptFromString :或者从DOM树中获取更详细的数据? – 2010-01-22 14:48:39

1

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

10

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

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

如果加载URL不等于要加载比主文档(可能是一个iFrame)其他东西mainDocumentURL。

相关问题