我有一个包含 WebView 的 Cocoa 应用程序。由于应用程序的已安装客户群,我的目标是 10.4 SDK。 (即我不能要求 Leopard。)
我有两个文件:index.html 和 data.js。
在运行时,为了响应用户输入,我经常覆盖 data.js 文件,用应用程序的当前数据填充它。
(index.html 文件在正文加载时使用 data.js 文件填充 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 文件的当前更改。看起来 javascript 文件 (data.js) 实际上被缓存了,不管 URL 的缓存策略如何。
作为解决方法,我尝试在 loadRequest 之后调用 [[myWebView mainFrame] reload],但这会导致其他问题。 ( WebView 根本没有更新。)
谁能提出解决或解决此问题的方法?谢谢。
最佳答案
不是解决方案,而是可能有效的解决方法:
尝试在您的 URL 中附加类似“?version=some_random_number”的内容,每次重新加载时使用不同的随机数。根据我的经验,这在强制 webkit 重新加载方面非常有效。
关于javascript - Cocoa - 防止在 WebKit 中缓存 Javascript - Safari Beta 4 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/900415/