2009-11-12 15 views
6

In meiner App gibt es eine uiwebview, die eine URL lädt. Ich verwende die folgende Zeile, um das HTML der lokal geladenen Seite zu speichern, um es offline anzeigen zu können.iphone uiwebview download komplette Seite mit CSS und Bilder

NSString* html=[webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('html')[0].innerHTML"] 

Das Problem ist nur das HTML des Dokuments, das gespeichert wird, habe ich auch die Bilder speichern möchten, und die CSS zusammen mit dem HTML, so dass der Benutzer die Seite sehen, als ob er online ist.

nur wie "Speichern der Webseite abgeschlossen" oder etwas, das wir in den Browsern verwendet haben.

schätzen Sie Ihre Hilfe.

Antwort

4

Es gibt keinen einfachen Weg. Regex den HTML-Code mit RegexKitLite (http://regexkit.sourceforge.net/RegexKitLite/index.html) und alle URLs zu .jpg, .gif, .png, .css und .js und was auch immer Sie brauchen.

abwechselnd Anruf:

NSString* imgUrls=[webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('img')"] 

oder so ähnlich, ich bin kein Javascript sausen ... und dann beschäftigen sich mit was auch immer alles, was zurückgibt;)

Es tut uns leid. Es ist ein Schmerz im Hinterland.

edit:

speichern alle IMG auf dem iPhone, auch die HTML-Datei speichern. Wenn Sie die Seite neu laden wollen, laden Sie die HTML aus einer Datei in einen String und dann

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

verwenden, um die HTML-Zeichenfolge zu laden. baseURL wird verwendet, um das Verzeichnis oder die Site anzugeben, von der/dem sich die Webansicht die HTML-Zeichenfolge vorstellt, die Sie übergeben. Alle URLs sind relativ dazu.

Beachten Sie, dass dies für absolute URLs nur für relative URLs nicht sehr gut funktioniert. Also das, in der HTML-Datei wird Affe Dinge:

<img src="http://google.com/f/r/i/g/img.gif"> 

während dies wäre ok:

<img src="f/r/i/g/img.gif"> 

Auch diese ganze Lösung mucky ist. Sie könnten in eine bereits vorhandene Open-Source-rekursive HTML-Spider suchen. Ich denke, wget macht, was Sie wollen, aber ich bezweifle, dass es für iPhone ohne eine Menge Ärger kompiliert werden kann.

+0

Vielen Dank für die schnelle Antwort ich weiß, es ist ein Schmerz: S , aber ich es noch nicht bekommen .. wenn ich bekam alle IMGs Tag was dann? - Wie platziere ich sie, um offline angezeigt zu werden? versuchen, mehr zu erklären, wenn Sie wissen ... –

+0

hinzugefügt mehr Details. –

+0

Ich glaube, ich die Bilder Teil bekommen .. aber wie u CSS-Dateien URLs mit Javascript bekommen, weil der Tag-Name Vielen Dank wieder nicht natürlich CSS ist ! –

0

Ich hatte keine Zeit zu überprüfen, aber ASIWebPageRequest Nähte sehr vielversprechend. Darin heißt es kann „Speichern Sie eine komplette Web-Seite in einem einzelnen String oder mit jeder externen Ressource in einer separaten Datei von der Seite referenziert“

ASIWebPageRequest 1

Ich werde es auf einem meiner Projekte verwenden möchte, und dann den Thread aktualisieren.

Gonso