Determinar si una imagen se cargo en un webbrowser

Iniciado por rubeng, 10 Agosto 2007, 02:31 AM

0 Miembros y 1 Visitante están viendo este tema.

rubeng

weno eso como se puede determinar si una imagen se cargo en un webbrowser lo ideal seria un timer con un condicional pero no conozco una funcion que haga eso alguien tiene alguna idea?
salu2

rubeng

puede alguien responder si se puede o no?
no puede haber tanta gente y q ninguno sepa =S

LeandroA

hola tenes que utilizar javascript para determinarlo. para ello tenes que ingresar a las propiedades del Document del webrowser


Dim LaImagen As String
Private Sub Form_Load()
Me.Show
LaImagen = "D:\Mdis documentos\Image2.png"
'WebBrowser1.Navigate "about:<img src='" & LaImagen & "'  onerror=" & Chr(34) & "alert('La imagen no se cargo')" & Chr(34) & " /> "
WebBrowser1.Navigate "about:<img src='" & LaImagen & "' id=1 onerror=" & chr34 & "this.id='Error'" & chr34 & " /> "
End Sub

Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
If WebBrowser1.Document.getelementbyid(1) Is Nothing Then
MsgBox "La Imange no se cargo"
End If
End Sub


Espero que sea eso a lo que te referias, sino explicate mejor

rubeng

gracias por la ayuda pero lo que yo navego no es la pagina en la que solo esta la foto es una pagina con texto y otras fotos quiero saber si esa imagen se ha cargado. garicas salu2

Freeze.

El lo que quiere hacer es:

Seleccionar una imagen de el...
Navegar en cualquier web...
Y saber si se ha cargado cierta imagen..

Yo supongo que seria:

Sacando el codigo fuente, Usando Instr y Mid para ver el nombre de la imagen y comparar...

Es eso?

LeandroA

hola si ahora se entiende mejor, siempre es mejor especificar lo mejor posible todo, cuando se formula una pregunta.

bien me fije y la forma de saber si se cargo es mirando el tamaño de la imagen (FileSize)

lo que decia freeze, no funcionaria porque el codigo de fuente siempre va a ser igual por mas que la imagen no se cargue.

te paso un ejemplo con una pagina que por lo que veo no carga dos imagenes la 3 y la 7 en tal caso remplaza las imagenes por otra, y tambien te puse un ejemplo de como obtener otros datos


Private Sub Form_Load()
WebBrowser1.Navigate "http://www.wikilearning.com/mi_primera_aplicacion_cliente-wkccp-7936-5.htm"

End Sub

Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)

With WebBrowser1.Document.images
    For i = 0 To .length - 1
        Debug.Print "-------- Imagen " & i & "-----------"
        Debug.Print "Ancho: " & .Item(i).Width 'Ancho
        Debug.Print "Alto: " & .Item(i).Height 'Alto
        Debug.Print "Tamaño: " & .Item(i).FileSize 'Tamaño
        Debug.Print "Texto alternativo: " & .Item(i).alt 'Texto alternativo
        Debug.Print "Direccion: " & .Item(i).src 'Direccion de la imagen
        Debug.Print "-------------------------------------" & vbCrLf
   
        If .Item(i).FileSize = -1 Then
            MsgBox "La Imagen " & i & " no se cargo y sera remplzada por otra"
            .Item(i).src = "C:\WINDOWS\A pescar.bmp"
        End If
    Next
End With

End Sub


Saludos

rubeng

creo que eso servira..
especificamente lo que keria hace es suponete.. entras al foro de el hacker tenes la imagen de buscar arriba y que cuando se cargue por ejemplo la clikee pero tendria que determinar si fue cargada.. no es eso lo que quiero hacer..
lo q quiero hacer en un sitio despues de un contador aparece una imagen y el programa cuando ve q la imagen cargo va a otro y asi
salu2

rubeng

usando esta funcion
Private Sub Timer1_Timer()
With WebBrowser1.Document.images
    For i = 0 To .length - 1
        If .Item(i).FileSize = -1 Then
            If .Item(i).src = "http://imagen.gif" Then
                MsgBox "la imagen nose cargo"
            End If
        Else
            If .Item(i).src = "http://imagen.gif" Then
                MsgBox "la imagen sise cargo"
            End If
        End If
    Next
End With
End Sub

Private Sub Form_Load()
WebBrowser1.Navigate "http://paginadondetaimagen.gif.htm"
End Sub

me salta el siguiente error
CitarError '91' en tiempo de ejecución:
           La variable de tipo Object o la variable de bloque With no
           está establecida.
y me señala en amarillo esta parte
With WebBrowser1.Document.images
que puede ser? que estoy haciendo mal?

LeandroA

Hola no puedes acceder a esa propiedad hasta que el documento no se descargue por completo, de hay tal error. tenes que asegurarte de que el documento se haya descargado por eso te digo que lo pongas en el evento del WebBrowser1_DocumentComplete

rubeng

lo puse asi y me sigue saltando el mismo error =S
Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
With WebBrowser1.Document.images
    For i = 0 To .length - 1
        If .Item(i).FileSize = -1 Then
            If .Item(i).src = "http://imagen.gif" Then
                MsgBox "la imagen nose cargo"
            End If
        Else
            If .Item(i).src = "http://imagen.giff" Then
                MsgBox "la imagen sise cargo"
            End If
        End If
    Next
End With
End Sub


Error '91' en tiempo de ejecución:
           La variable de tipo Object o la variable de bloque With no
           está establecida.
nose q puede ser