Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何判断UIWebView内容何时更改?_Ios_Uiwebview_Page Refresh_Etag - Fatal编程技术网

Ios 如何判断UIWebView内容何时更改?

Ios 如何判断UIWebView内容何时更改?,ios,uiwebview,page-refresh,etag,Ios,Uiwebview,Page Refresh,Etag,我正在使用Xcode开发iOS应用程序。应用程序每隔X秒刷新一次UIWebView 作为背景,该应用程序称为“浏览器自动刷新”:) 我试图在页面刷新后UIWebView的内容发生更改(即当前正在刷新的页面刚刚由该页面的所有者更新)时实现警报。我已经设法获得了响应标题,但无法从多个站点(包括Google.com)看到任何eTag信息 有人知道在刷新UIWebView页面时,如何判断网页内容已更改吗?正如Peter Pajchl所说,UIWebView上的内容通常不在您的控制之下。这意味着,除非您仅

我正在使用Xcode开发iOS应用程序。应用程序每隔X秒刷新一次UIWebView

作为背景,该应用程序称为“浏览器自动刷新”:)

我试图在页面刷新后UIWebView的内容发生更改(即当前正在刷新的页面刚刚由该页面的所有者更新)时实现警报。我已经设法获得了响应标题,但无法从多个站点(包括Google.com)看到任何eTag信息


有人知道在刷新UIWebView页面时,如何判断网页内容已更改吗?

正如Peter Pajchl所说,UIWebView上的内容通常不在您的控制之下。这意味着,除非您仅依赖严格受您控制的一组固定服务,否则您不能依赖HTTP头来查找任何有用的元信息

正如他所建议的,您可以计算页面内容的校验和(这是强Etag最有可能做的),并将其与新获取的版本进行比较。缺点是该方法本身就很强,如果您只对语义更新感兴趣,则会得到误报。为了使您的应用程序对特定站点无效,所有者可以在内容的某处插入时间戳,因为每次更新都会产生不同的校验和

因此,您可以尝试在计算校验和之前对数据进行规范化,只考虑有意义的数据。这很可能需要对您正在观看的站点有一个先验知识才能有效


另一种方法是计算某种相似性度量(有无标准化),并在“更新”警报上设置阈值。这可能需要计算,更糟糕的是,它可能需要更多的先验信息(至少是treshold这样的元参数)。

正如Peter Pajchl所说,UIWebView中的内容通常不在您的控制之下。这意味着,除非您仅依赖严格受您控制的一组固定服务,否则您不能依赖HTTP头来查找任何有用的元信息

正如他所建议的,您可以计算页面内容的校验和(这是强Etag最有可能做的),并将其与新获取的版本进行比较。缺点是该方法本身就很强,如果您只对语义更新感兴趣,则会得到误报。为了使您的应用程序对特定站点无效,所有者可以在内容的某处插入时间戳,因为每次更新都会产生不同的校验和

因此,您可以尝试在计算校验和之前对数据进行规范化,只考虑有意义的数据。这很可能需要对您正在观看的站点有一个先验知识才能有效


另一种方法是计算某种相似性度量(有无标准化),并在“更新”警报上设置阈值。这可能需要计算,更糟糕的是,它可能需要更多的先验信息(至少是treshold这样的元参数)。

我认为Sami Hult在试图找到有意义的数据来计算校验和方面做得很好。 我可能会建议尝试寻找Safari阅读器的内容,它不会适用于所有可能的互联网页面,但可能适用于博客和新闻网站。 参考一下这个 一些新闻网站可能会定期更新自己,以显示新内容,因此您只需实现委托方法shouldstartdoadwithrequest即可获得通知。
我会避免对任意页面使用http头。

我认为Sami Hult在试图找到有意义的数据来计算校验和方面做得很好。 我可能会建议尝试寻找Safari阅读器的内容,它不会适用于所有可能的互联网页面,但可能适用于博客和新闻网站。 参考一下这个 一些新闻网站可能会定期更新自己,以显示新内容,因此您只需实现委托方法shouldstartdoadwithrequest即可获得通知。
我会避免对任意页面使用http头。

如果视图中显示的网页不在您的控制之下,则每个网页都会有不同的设置(头、缓存等),这使得IMO几乎无法以防弹方式观察到更改。您是否可以在每次加载时生成html页面(数据本身)的校验和,并比较“当前”和“新”?如果视图中显示的网页不在您的控制之下,则每个网页都将具有不同的设置(标题、缓存等),这使得IMO几乎不可能以防弹方式观察更改。你能在每次加载时生成html页面(数据本身)的校验和,并比较“当前”和“新”吗?你是想观看互联网上的任意页面,还是想观看应用程序对内容发布有一定了解的页面?如果您试图通过HTTP事务和接收到的内容来了解这一点,Sami和Peter已经阐述了此方法的许多架构限制。尝试查看internet上的任何页面。您是否尝试查看internet上的任意页面,或者它是为应用程序对内容发布有一定了解的页面设计的?如果您试图通过HTTP事务和接收到的内容来了解这一点,Sami和Peter已经阐述了这种方法的许多架构限制。