2010-11-20 9 views
6

Estoy intentando crear un navegador web personalizado basado en el control del navegador web de WPF. Implementé la interfaz IWebBrowser2 com e implementé los controladores para los eventos Navigating(), NavigatedTo() y LoadCompleted(). Pero estas devoluciones de llamada de eventos se activan solo una vez para la página de nivel superior. Supongamos ahora que una página tiene algunos archivos java script, css e image; el navegador emite solicitudes HTTP separadas para descargar estos archivos. Nos gustaría capturar los eventos de solicitud HTTP individuales. Por ejemplo, si la estructura de la página HTML es¿Cómo obtener la URL para la cual se desencadena el evento downloadBegin()?

<html> 
    <body> 
    <img src="img1.bmp"/> 
    <imp src="img2.bmp"/> 
    </body> 
</html> 

Me gustaría capturar los tiempos de descarga individuales para img1.bmp y img2.bmp. ¿Podría alguien sugerir una forma de lograr esto?

Mientras tanto encontré que el evento downloadbegin() de DWebBrowserEvents_Event se activa para estas solicitudes de imagen, etc., pero no puedo obtener la URL desde la que se está descargando, ya que el controlador toma el valor de vacío como parámetro.

Entonces, ¿hay alguna forma de que pueda obtener la URL correspondiente porque hay un evento que es downloadComplete que se activa cuando se completa la descarga. Entonces con eso puedo lograrlo de esa manera.

Pero tengo que resolver el tiempo de renderizado de la imagen anterior. Estoy muy mal. Por favor, ayúdenme ....

Respuesta

0

no tengo un conocimiento profundo sobre estas clases, pero hice un poco de lectura. en MDSN que dicen sobre el evento downloadbegin(): http://msdn.microsoft.com/en-us/library/cc136556(v=vs.85).aspx

Este evento se activa poco después de las DWebBrowserEvents :: BeforeNavigate evento o el evento DWebBrowserEvents2 :: BeforeNavigate2, a menos que la navegación se cancela. Cualquier animación o indicación de "ocupado" que debe mostrar el contenedor debe estar conectado a este evento.

y cuando he comprobado el BeforeNavigate vi que tiene una URL en sus parametros que encontré este (no MSDN pero su lógico que itll tener una URL) http://blog.yezhucn.com/progie/222647_beforenavigate.htm

vacío BeforeNavigate (
IDispatch * pDisp, VARIANTE * & url, VARIANT * & Banderas, VARIANTE * & TargetFrameName, VARIANTE * & Postdatum, VARIANT * & Encabezados, VARIANT_BOOL * & Cancelar );

así que si siempre tendrá un evento BeforeNavigate, puede usar su url y verificar el próximo evento de descarga completo que esté conectado al evento DownloadBegin. Supongo que por cada descarga hace un evento BeforeNavigate pero no lo sabré porque no puedo probarlo (no hay código para verificarlo) pero espero que me ayude.

+2

BeforeNavigate solo se llama una vez, no una vez por cada archivo descargado para la página. –

Cuestiones relacionadas