Link zu Ressourcen in WebView – iPhone

Lesezeit: 4 Minuten

Link zu Ressourcen in WebView – iPhone
Isaak Waller

Ich habe eine Webansicht in meiner iPhone-Anwendung und ich habe auch einige HTML-Dateien in meinem Ressourcenordner. Wenn meine App geladen wird, lade ich eine Seite aus meinen Ressourcen in meine Webansicht. Aber ich muss Links in meiner Webansicht erstellen, die auf andere Ressourcen verweisen (z. B. Bilder oder andere HTML-Dateien). Nur einen relativen Link zu machen, funktioniert nicht:

<a href="https://stackoverflow.com/questions/478665/OtherPage.html">Doesn't work</a>

  • Haben Sie etwas dagegen, ein vollständiges Beispiel für den funktionierenden Code zu geben? Nachdem ich diese Seite gründlich gelesen habe, bin ich immer noch etwas verwirrt darüber, wie ich alles richtig zusammensetzen soll. Danke.

    – mw

    8. Juni 10 um 1:52

Link zu Ressourcen in WebView – iPhone
Joe D’Andrea

Anscheinend gibt es ein bisschen ein Problem nach dem iPhone SDK-Versionshinweise für iPhone OS 3.0:

Problem: UIWebView kann keine lokalen Ressourcen in Apps laden, die gegen 3.0 erstellt wurden.

Beim Benutzen [UIWebView
loadHTMLString:baseURL:]
sollte der HTML-String nicht auf lokale Ressourcen mit dem verweisen file:// planen. Passen Sie stattdessen ein NULL oder ein file://
URL für baseURL:oder binden Sie die Ressourcen direkt in das HTML mit ein
<style> und <script> Stichworte.

Meinetwegen. Aber vorbei in einer Standardausgabe file:// URL für baseURL funktioniert nicht ganz. Allerdings … stellt sich heraus, dass, wenn Sie ändern / zu // und Leerzeichen zu %20, Sie werden eingestellt! (Verwenden %20 macht sehr viel Sinn, aber der Teil mit den doppelten Schrägstrichen hat mich überrascht.)

Nehmen wir an, Sie haben bereits NSString *markup installieren. Hier ist alles, was Sie tun. (Ich habe den Code aus Gründen der Lesbarkeit hier eingefügt. Sie können ihn nach Belieben umgestalten/anpassen.)

 NSString *resourcePath = [[[[NSBundle mainBundle] resourcePath]
     stringByReplacingOccurrencesOfString:@"https://stackoverflow.com/" withString:@"//"]
     stringByReplacingOccurrencesOfString:@" " withString:@"%20"];
 [webView loadHTMLString:markup baseURL:[NSURL URLWithString:
     [NSString stringWithFormat:@"file:/%@//", resourcePath]]];

Solange auf Ihr CSS, JavaScript und Ihre Bilder nur durch den Dateinamen verwiesen wird, sollte dies in iPhone OS 3.0 ausreichen, wo loadHTMLString:baseURL: ist besorgt!

  • funktioniert super, danke fürs Posten … das sollte die richtige Antwort sein

    – samik

    13. Mai ’10 um 7:06 Uhr


  • Weißt du … jetzt, wo ich mir ansehe, was ich noch einmal geschrieben habe, frage ich mich, ob ich einen Fauxpas gemacht habe, indem ich „file:/%@//“ anstelle von „file://%@/“ verwendet habe? Das könnte die unbeabsichtigte Quelle der Anforderung / to // sein, in diesem Fall geht es nur um den Umgang mit Leerzeichen, was Standard-S/G/HTML-Zeug ist. Die Gedanken? (Es ist schon eine Weile her, also wenn ich hier meine eigene Logik vergesse, könnt ihr mich gerne korrigieren – ha!)

    – Joe D’Andrea

    17. Mai ’10 um 17:59 Uhr


  • Hatte das gleiche Problem gerade in iOS 4.2. Lokale Bilder wurden nicht angezeigt. Dann habe ich meine URL so formatiert (vierfache Schrägstriche!) Und es funktioniert: “file:////Users//iDeveloper//Library//Application%20Support//iPhone%20Simulator//4.2//Applications// 9706B7FE-4FAC-4FB0-9DA4-C07F322D4AC1//TestBrowser.app//Data//HTML//English//”. Die Verwendung der “richtigen” Syntax mit einem Schrägstrich im Pfad und zwei Schrägstrichen für “file://” funktioniert NICHT. Vielen Dank!

    – Krumelur

    20. April 11 um 12:34 Uhr

Wenn Sie diese Ressourcen laden, müssen Sie die Basis-URL festlegen. Sie können dies mit der Methode tun:

- (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL

… wobei baseURL die Datei-URL Ihres Ressourcenordners wäre.

  • Danke – aber ich werde meine Antwort akzeptieren, nicht deine, weil sie mein Problem tatsächlich löst (mit deiner Hilfe). Danke!

    – Isaac Waller

    26. Januar 09 um 20:49 Uhr

  • Sie können es immer noch in 3.0 tun. Siehe Antwort von jdandrea.

    – Kühler Zhong

    13. November 09 um 5:56 Uhr

Ich habe es behoben: Ich habe dies für die BaseURL verwendet, wie August sagte:

NSString *path = [[NSBundle mainBundle] bundlePath];
NSURL *baseURL = [NSURL fileURLWithPath:path];

Danke schön!

  • Scheint nicht in iPhone OS 3.0 zu funktionieren. Siehe meinen anderen Beitrag für eine leichte Änderung!

    – Joe D’Andrea

    08.09.09 um 21:03 Uhr

Dieser Code würde eine Zeichenfolge mit der URL einer Datei namens „https://stackoverflow.com/questions/478665/OtherPage.html“ im Ressourcenverzeichnis Ihres Bundles zurückgeben.

[[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"OtherPage" ofType:@"html"]] absoluteString]

Das hat bei mir funktioniert. Meine HTML-Dateien befanden sich in Unterordnern (nicht Gruppen) in meinem Projekt. Meine HTML-Seite heißt page01 und der Unterordner ist html:

NSString *resourcePath = [[NSBundle mainBundle] resourcePath];
NSString *pathToHtml = @"html";
NSURL *baseURL = [[NSURL alloc] initFileURLWithPath:pathToHtml isDirectory:YES];

NSString *html = [NSString stringWithContentsOfFile:[[NSBundle mainBundle]    
                             pathForResource:@"page01" ofType:@"html"                                                               
                             inDirectory:@"html"] 
                         encoding:NSUTF8StringEncoding error:nil];
[webview loadHTMLString:html baseURL:baseURL];

Link zu Ressourcen in WebView – iPhone
Ed Marty

Versuchen Sie zuerst, OtherPage.html zu laden. Wenn dies nicht möglich ist, ist es nicht vorhanden, und Sie haben einen Teil des Hinzufügens zum Projekt verpasst. Wenn Sie können, enthält der Link möglicherweise nur einen Tippfehler, oder die Basis-URL ist möglicherweise falsch, wie von August angegeben. Als ich eine HTML-Datei mit Bildern erstellte, die sich in der Ressourcendatei befanden, funktionierte es nur mit

<img src="https://stackoverflow.com/questions/478665/file.png">

1643907727 90 Link zu Ressourcen in WebView – iPhone
ceejayoz

Sehen Sie sich an, wie Phonegap das macht. Hier ist ihr Tutorial zu lokalen Ressourcen auf dem iPhone. Schritt 11 könnte das sein, was Sie vernachlässigen.

  • Nein, ich habe alle Schritte überprüft und alle ausgeführt. Danke trotzdem.

    – Isaac Waller

    26. Januar 09 um 2:40 Uhr

.

757830cookie-checkLink zu Ressourcen in WebView – iPhone

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy