从UIWebView获取内容长度

时间:2010-04-06 05:33:21

标签: iphone objective-c cocoa-touch uiwebview

我希望了解网页是否发生了变化,我将使用网页的内容长度,但还没有看到这样做的方法。有任何想法吗?或者,任何人都可以想到另一种方法来定期检查网页是否发生了变化?

2 个答案:

答案 0 :(得分:6)

如果您的意思是更改了导航,则可以使用自定义UIWebViewDelegate并设置标记,例如-(void)webViewDidFinishLoad:发生了。

您可能需要检查UIWebView属性request以检查网址实际上是否有所不同。

如果您想检查内容是否已更改,则可以检索内容,例如像这样:

NSString* script  = @"document.body.innerHTML";
NSString* content = [webView stringByEvaluatingJavaScriptFromString:script];

或检索长度,例如像这样:

NSString* script = @"document.body.innerHTML.length";
int length = [[webView stringByEvaluatingJavaScriptFromString:script] integerValue];

答案 1 :(得分:0)

我假设您想知道您显示的网页是否与您再次点击服务器时获得的网页不同。

您无法对UIWebView中记录的界面做很多事情。

您可以使用NSURLConnection仅询问网页的标题而不是实际内容。获得标题后,查看“Last-Modified”和“Content-Length”等字段,看它是否已更改。您还可以查看304未修改的响应代码。

将新NSURLRequest的HTTPMethod设置为HEAD而不是GET,以便不获取正文。 将您的类设置为使用该请求创建的NSURLConnection的委托。 处理以下委托回调并检查响应中的标题。

-(void) connection:(NSURLConnection *)inConnection didReceiveResponse:(NSURLResponse *)inResponse;

有关详细信息,请查看此处:

http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol