我有一个包含WebView的Cocoa应用程序.由于应用程序已安装客户群,我的目标是10.4 SDK. (即我不能要求Leopard.)
我有两个文件:index.html和data.js.
在运行时,为了响应用户输入,我通常会使用应用程序中的当前数据填充data.js文件.
(data.js文件由body.html上的index.html文件用于填充index.html中的表.index.html本身不会被修改.)
为了(据说)阻止WebKit缓存我经常变化的数据,我打电话给:
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:indexFileURL cachePolicy: NSURLRequestReloadIgnoringCacheData timeoutInterval:10];
和
[[myWebView mainFrame] loadRequest: urlRequest];
这在Tiger和Leopard中非常有效.
但是,如果安装了Safari Beta 4,它在Leopard中会失败. webview中index.html文件的绘制不考虑data.js文件的当前更改.无论URL的缓存策略如何,javascript文件(data.js)实际上都被缓存了.
作为一种解决方法,我尝试在loadRequest之后调用[[myWebView mainFrame] reload],但这会导致其他问题. (webview根本没有更新.)
任何人都可以建议一种方法来解决或解决这种行为?谢谢.
解决方法:
不是解决方案,而是可能有效的解决方法:
尝试在您的网址中附加“?version = some_random_number”等内容,每次重新加载时都会使用不同的随机数.根据我的经验,这在强制webkit重新加载方面非常有效.
原文地址:https://codeday.me/bug/20190607/1192842.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。