2009-11-12 13 views
6

Nella mia app c'è un uiwebview che carica un URL. Sto usando la seguente riga per salvare l'HTML della pagina caricata localmente per poterla visualizzare offline.iphone uiwebview scarica la pagina completa con CSS e immagini

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

Il problema non è che il codice HTML del documento che viene salvato, voglio salvare anche le immagini e il CSS con il codice HTML in modo che l'utente veda la pagina come se egli è in linea.

proprio come "salva la pagina web completa" o qualcosa del genere, che era solito usare nei browser.

apprezzare il vostro aiuto.

risposta

4

Non esiste un modo semplice. Registra il codice HTML utilizzando RegexKitLite (http://regexkit.sourceforge.net/RegexKitLite/index.html) e applica tutti gli URL a .jpg, .gif, .png e .css e .js e qualsiasi altra cosa tu abbia bisogno.

alternativamente, chiamata:

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

o qualcosa del genere, non sono un mago javascript ... e poi trattare con qualunque tutto che restituisce;)

spiacenti. È un dolore per la frenesia.

edit:

Salva tutte le img di su iPhone, salvare anche il file html. Quando si desidera ricaricare la pagina, caricare il codice HTML da un file in una stringa, e quindi utilizzare

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

per caricare la stringa HTML. baseURL è usato per specificare la directory o il sito in cui la webview immaginerà la stringa html che si sta posizionando. Tutti gli URL saranno relativi a questo.

Nota, naturalmente, questo non funzionerà molto bene per URL assoluti, solo per quelli relativi. Quindi questo, nel file HTML, saranno cose scimmia up:

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

mentre questo sarebbe ok:

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

Ancora una volta, tutta questa soluzione è fangoso. Si potrebbe esaminare uno spider html ricorsivo open source preesistente. Penso che wget faccia quello che vuoi, ma dubito che possa essere compilato per iPhone senza un problema di fastidio.

+0

Grazie per la risposta rapida So che è un dolore: S ma io ancora non capisco .. se ho ottenuto tutto tag IMG allora che cosa? -come posso posizionarli per essere visualizzati offline? prova a spiegare di più se sai ... –

+0

aggiunto ulteriori dettagli. –

+0

penso che ottenere la parte immagini .. ma come si fa u ottenere i file CSS URL con JavaScript perché il nome del tag non è ovviamente CSS Ancora una volta Grazie! –

0

Non ho avuto il tempo di controllare, ma ASIWebPageRequest sembra molto promettente. Essa afferma che può "memorizzare una pagina web completa in una singola stringa, o con ogni risorsa esterna in un file separato riferimento dalla pagina"

ASIWebPageRequest 1

Userò su uno dei miei progetti, e quindi aggiorna il thread.

Gonso