【发布时间】:2010-04-06 05:33:20
【问题描述】:
我正在寻找网页是否已更改,我打算使用网页的内容长度,但没有看到这样做的方法。有任何想法吗?或者谁能想到另一种方法来定期检查网页是否发生了变化?
【问题讨论】:
标签: iphone objective-c cocoa-touch uiwebview
我正在寻找网页是否已更改,我打算使用网页的内容长度,但没有看到这样做的方法。有任何想法吗?或者谁能想到另一种方法来定期检查网页是否发生了变化?
【问题讨论】:
标签: iphone objective-c cocoa-touch uiwebview
如果您的意思是改变了导航是否发生,您可以使用自定义 UIWebViewDelegate 并设置一个标志,例如-(void)webViewDidFinishLoad: 发生了。
您可能需要检查 UIWebViews 属性 request 以检查 URL 是否实际不同。
如果您想检查内容是否已更改,您可以检索它,例如像这样:
NSString* script = @"document.body.innerHTML";
NSString* content = [webView stringByEvaluatingJavaScriptFromString:script];
或者检索长度,例如像这样:
NSString* script = @"document.body.innerHTML.length";
int length = [[webView stringByEvaluatingJavaScriptFromString:script] integerValue];
【讨论】:
我假设您想知道您已经显示的网页是否与再次访问服务器时获得的网页不同。
你不能对 UIWebView 中记录的接口做很多事情。
您可以使用 NSURLConnection 仅请求网页的标题而不是实际内容。获得标题后,查看“Last-Modified”和“Content-Length”等字段,看看它是否已更改。您也可以查看 304 not modified 响应代码。
将新的 NSURLRequest 的 HTTPMethod 设置为 HEAD 而不是 GET 以不获取正文。 将您的类设置为使用该请求创建的 NSURLConnection 的委托。 处理以下委托回调并检查响应中的标头。
-(void) connection:(NSURLConnection *)inConnection didReceiveResponse:(NSURLResponse *)inResponse;
更多信息请看这里:
【讨论】: