Also arbeite ich mit WebKit - WebView und WebFrame. Ich verwende ein benutzerdefiniertes NSURLProtocol, um den HTML-Code für jede Anfrage aus einer Datenbank abzurufen. Das Problem ergibt sich aus der Tatsache, dass die Links im HTML alle relativ sind, wenn sie wirklich absolut sein sollten. Zum Beispiel ist die SeiteKann ich erzwingen, dass alle Links in einem WebView (oder WebFrame) als absolute Pfade behandelt werden?
foo/bar.html
Mai einen Link darin haben, dass die Punkte auf
foo/baz.html
Das Problem ist, dass, da der Link relativ ist, endet die Anforderung für
ist bis/foo/foo/baz.html
Bis jetzt habe ich versucht, dies zu umgehen, indem ich die beiden URLs vergleiche und das gemeinsame Präfix - in diesem Fall 'foo /' - abreiße und mich mit foo/baz.html belasse. Dies funktioniert jedoch nicht für alle Möglichkeiten, insbesondere wenn mehrere Verzeichnisse im Pfad vorhanden sind. Ich mache das in der Methode "didStartProvisionalLoadForFrame:" meines WebView-FrameLoadDelegate.
Leider habe ich keine Kontrolle über den HTML-Code, den ich zeige, daher ist es nicht möglich, die Links selbst zu ändern.
Aus irgendeinem Grund gibt [request relativeString] mir die gesamte URL, mit dem aktuellen Verzeichnis bereits vor - das heißt, die relativeString und absoluteString geben die gleiche Zeichenfolge zurück. –
Also habe ich es geschafft. In webView: resource: willSendRequest: redirecResponse: fromDataSource: Ich erhalte die URL der Anfrage sowie die URL der aktuellen Seite. Ich kann das aktuelle Verzeichnis abrufen, indem ich die letzte Pfadkomponente entferne, und entferne sie dann vom Anfang der URL der Anfrage. Ich werde diese Antwort akzeptieren, da sie mich zumindest in die richtige Richtung weist. Vielen Dank! –