Ich habe eine Cocoa-App mit einem WebView. Das Targeting auf das 10.4 SDK erfolgt aufgrund des installierten Kundenstamms der App. (d. h. ich kann Leopard nicht benötigen.)Cocoa - Verhindert das Zwischenspeichern von Javascript in WebKit - Safari Beta 4 Bug?
Ich habe zwei Dateien: index.html und data.js.
Zur Laufzeit schreibe ich als Antwort auf Benutzereingaben die Datei data.js und befülle sie häufig mit aktuellen Daten aus der App.
(Die data.js Datei von der Datei index.html auf die Körperlast verwendet wird, in der index.html Tabellen. Index.html sich nicht geändert.)
Um (angeblich) zu verhindern, WebKit-Caching meiner oft wechselnden Daten, rufe ich:
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:indexFileURL cachePolicy: NSURLRequestReloadIgnoringCacheData timeoutInterval:10];
und
[[myWebView mainFrame] loadRequest: urlRequest];
Das funktioniert sehr gut in Tiger und Leopard.
Es schlägt jedoch in Leopard fehl, wenn Safari Beta 4 installiert ist. Die Zeichnung der Datei index.html in der Webansicht berücksichtigt nicht die aktuellen Änderungen an der Datei data.js. Es scheint, dass die Javascript-Datei (data.js) tatsächlich zwischengespeichert wird, unabhängig von der Cache-Richtlinie der URL.
Als Workaround habe ich versucht, [[myWebView mainFrame] reload] nach dem LoadRequest aufrufen, aber das verursacht andere Probleme. (Das Webview wird überhaupt nicht aktualisiert.)
Kann jemand vorschlagen, dieses Verhalten zu beheben oder zu umgehen? Vielen Dank.
Vielen Dank für die Hilfe. Ich habe gerade Ihre Herangehensweise versucht, aber leider wird das Javascript noch im Cache gespeichert. :( – SirRatty
Ich habe eine Problemumgehung basierend auf Ihrem Ratschlag erstellt. Anstatt die index.html-Datei als eine URL zu laden, lese ich jetzt den Inhalt der Datei als ein NSString. Ich ändere dann diese Zeichenfolge an dem Punkt, wo die HTML für „data.js“ suchen zu lesen:. data.js cacheBaffler = 1234; // einige zufällige Zahl ich dann loadHTMLString auf der Webansicht Mainframe nennen Dies funktioniert interessant. Datenpunkt: Ohne die Änderung des Dateinamens verwendet loadHTMLString das Caching sowohl in Tiger als auch in Leopard, unabhängig von Safari 4 Beta. Großartig für Browser-Testergebnisse ... – SirRatty
Schön, dass es geklappt hat :) –