UIWebView baseURL und absoluten Pfad
Ich habe eine HTML-Seite, die aufgebaut ist wie dieses:
<html>
<head>
<link rel="stylesheet" href="/style.css" />
</head>
<body>
</body>
</html>
Es ist gespeichert in Ordner "my documents":
/Users/username/Library/Application Support/iPhone Simulator/5.1/Applications/12345-ID/Documents/mysite/index.html
Habe ich auch gespeichert, der Stil.css in das Verzeichnis Dokumente:
/Users/username/Library/Application Support/iPhone Simulator/5.1/Applications/12345-ID/Documents/mysite/style.css
Aber wenn ich jetzt versuche, das laden der html-Code in meiner webview mit diesem:
NSURL *test = [NSURL URLWithString:@"file:///Users/username/Library/Application Support/iPhone%20Simulator/5.1/Applications/12345-ID/Documents/mysite/"]
[myWebView loadHTMLString:<the content retrieved from index.html> baseURL:test];
Die css wird nicht geladen, wenn ich die Anforderung abfangen können, um das stylesheet mit einem NSURLProtocol ich kann sehen, dass die Anforderung falsch ist. Es wird versucht, Anfrage:
file:///style.css
anstelle der vollständigen URL. Jetzt kann ich dieses Problem lösen durch entfernen der /vor der /Stil.css in der html-Datei. Aber gibt es einen einfachen Weg, diese zu lösen in nativen code, ohne änderung des html?
- Das ist genau das, was ich verwende (siehe Inhalt)
- Haben Sie versucht, die '/' off der Ende des NSURL *test = [NSURL ....... Linie. Haben Sie möglicherweise einen doppelten Schrägstrich Bedingung Auftritt, die verursacht werden, die möglicherweise auf die Standardeinstellungen, um den Standort der Benutzer, nur ein Gedanke.
- Funktioniert nicht 🙁
- OK in einem letzten Versuch, versuchen, die Antwort, die ich zur Verfügung gestellt haben. Sollte es funktionieren, denn ich habe diese Methode in meinem eigenen apps, die Anzeige Tonnen von Bildern relative Pfade zu verwenden. Der einzige Unterschied ist in meinem HTML habe ich nicht den Schrägstrich vor den Dateinamen, was bedeutet, dass Sie Ihre "/style.css" ändern müsste, um "Stil.css". Gibt es einen Grund warum Ihr so gegen das???
- Nein, es gibt nicht einen bestimmten Grund bin ich gegen das entfernen der / in front, aber der HTML-Code ist nicht von mir erstellt. Also ich wollte sehen, ob es war ein Weg, um dieses Problem zu lösen in der Muttersprache, so würde ich die Mühe der Ersteller zu entfernen /
- Einfach Fragen!!! +1
- Nebenbei bemerkt: Sie können eine lokale URI mit
pathForResource:ofType:
ausNSBundle
und verweisen Sie dann mitfile://<local_uri>
im eigenen HTML-Code. Zum Beispiel, fürjquery-2.1.1.min.js
verwende ich:NSString *jQueryFile = [[NSBundle mainBundle] pathForResource:@"jquery-2.1.1.min" ofType:@"js"]; NSString *jQueryUri = [@"file://" stringByAppendingString:jQueryFile];
und dann habe ich einfach fügen Sie es auf meine HTML:NSString *html = [NSString stringWithFormat:@"<some_html><script type=\"text/javascript\" src=\"%@\"></script></some_html>", jQueryUri];
. Schließlich:[myWebView loadHTMLString:html baseURL:nil];
Du musst angemeldet sein, um einen Kommentar abzugeben.
Generieren Sie Ihren Pfad und den Basis-url der folgenden Weise:
Einen tollen blog zum Thema:
http://iphoneincubator.com/blog/windows-views/uiwebview-revisited
Einen SO QS auf das Thema
UIWebView und lokale css-Datei
Entfernen der Schrägstrich war die einzige Lösung,