2009-11-12 10 views
6

En mi aplicación hay una página web que carga una url. Estoy usando la siguiente línea para guardar el HTML de la página cargada localmente para poder verlo fuera de línea.iphone uiwebview descarga la página completa con CSS e imágenes

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

El problema es solamente el código HTML del documento que se guarda, yo quiero salvar también las imágenes y el CSS, junto con el código HTML para que el usuario vea la página como si él no está en línea.

como "guardar página web completa" o algo así, que solíamos en los navegadores.

agradecemos su ayuda.

Respuesta

4

No hay una manera fácil. Regesta el HTML usando RegexKitLite (http://regexkit.sourceforge.net/RegexKitLite/index.html) y engancha todas las URL a .jpg, .gif, .png, .css y .js y todo lo que necesites.

alternativamente, llamada:

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

o algo así, no soy un genio de JavaScript ... y luego tratar de lo que todo lo que vuelve;)

Lo sentimos. Es un dolor en la retaguardia.

edición:

Guardar todos los años img en el iPhone, también guardar el archivo html. Cuando desea volver a cargar la página, cargar el código HTML de un archivo en una cadena, y luego usar

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

para cargar la cadena HTML. baseURL se utiliza para especificar el directorio o el sitio en el que la vista web se imaginará la cadena html en la que se encuentra ubicada. Todas las URL serán relativas a eso.

Tenga en cuenta, por supuesto, que esto no funcionará muy bien para las URL absolutas, solo para las relativas. Así que esto, en su archivo html, serán cosas mono hasta:

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

mientras que esto estaría bien:

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

Una vez más, toda esta solución es sucio. Puede buscar en una araña html recursiva de código abierto preexistente. Creo que wget hace lo que quieres, pero dudo que se pueda compilar para iPhone sin una gran cantidad de problemas.

+0

Gracias por la rápida respuesta sé que es un dolor: S Pero todavía no lo entiendo .. si me dieron toda la etiqueta IMG entonces qué? -cómo los coloco para verlos sin conexión? intente explicar más si lo sabe ... –

+0

agregó más detalles. –

+0

Creo que lo entiendo la parte .. imágenes pero ¿cómo hacer u obtener archivos CSS URLs con javascript debido a que el nombre de la etiqueta no es, por supuesto, CSS Una vez más Gracias! –

0

No tuve tiempo de comprobar, pero ASIWebPageRequest es muy prometedor. Se afirma que puede "guardar una página web completa en una sola cadena, o con cada recurso externo en un archivo separado que se hace referencia en la página"

ASIWebPageRequest 1

Me va a utilizar en uno de mis proyectos, y luego actualiza el hilo.

Gonso

Cuestiones relacionadas