2009-11-12 5 views
6

Dans mon application, il y a une uiwebview qui charge une URL. J'utilise la ligne suivante pour enregistrer le code HTML de la page chargée localement pour pouvoir l'afficher hors ligne.iphone uiwebview télécharger la page complète avec CSS et Images

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

Le problème est que le code HTML du document qui est enregistré, je veux sauver aussi les images et le CSS ainsi que le code HTML afin que l'utilisateur voir la page comme s'il est en ligne.

tout comme "enregistrer la page Web complète" ou quelque chose comme ça, que nous avions l'habitude de dans les navigateurs.

appréciez votre aide.

Répondre

4

Il n'y a pas de moyen facile. Regex le HTML en utilisant RegexKitLite (http://regexkit.sourceforge.net/RegexKitLite/index.html) et accrocher toutes les URL à .jpg, .gif, .png, et .css et .js et tout ce dont vous avez besoin.

tour à tour, appel:

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

ou quelque chose comme ça, je ne suis pas whiz javascript ... puis faire face à tout ce qui revient;)

Désolé. C'est une douleur dans l'arrière-pays.

modifier:

Enregistrer tous les img de l'iPhone, également enregistrer le fichier html. Lorsque vous voulez recharger la page, chargez le code HTML à partir d'un fichier dans une chaîne, puis utilisez

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

pour charger la chaîne HTML. baseURL est utilisé pour spécifier le répertoire ou le site que le webview va imaginer la chaîne html que vous lui donnez. Toutes les URL seront relatives à cela.

Notez, bien sûr, que cela ne fonctionnera pas très bien pour les URL absolues, seulement pour les URL relatives. Donc, cela, dans votre fichier html, les choses vont de singe jusqu'à:

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

alors que ce serait ok:

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

Encore une fois, cette solution tout est Mucky. Vous pourriez vous intéresser à une araignée html récursive open source préexistante. Je pense que wget fait ce que vous voulez, mais je doute qu'il puisse être compilé pour iPhone sans un lot de tracas.

+0

Merci pour la réponse rapide je sais que sa douleur: S , mais je ne comprends toujours pas .. si je suis tout tag MDÉ alors quoi? - comment les placer pour être consultés hors ligne? essayez d'expliquer plus si vous le savez ... –

+0

ajouté plus de détails. –

+0

je pense que je reçois de la part des images .. mais comment u obtenir des fichiers CSS urls avec javascript parce que le nom de la balise n'est pas bien sûr CSS Merci encore! –

0

Je n'avais pas le temps de vérifier, mais ASIWebPageRequest semble très prometteur. Il affirme qu'il peut « Enregistrer une page Web complète en une seule chaîne, ou chaque ressource externe dans un fichier séparé référencé à partir de la page »

ASIWebPageRequest 1

Je vais utiliser sur un de mes projets, puis mettez à jour le thread.

Gonso

Questions connexes