iFrame inolvidable...
Publicado: 08 Jun 2011, 12:48
Hola a todos. Tengo un problema que no consigo resolver y me gustaría saber si alguien tiene una idea de lo que pasa.
He realizado un programa para mi empresa que mecaniza la parte cliente repetitiva de una Web de la propia empresa y
que está dentro de su dominio (no es pública).
El desarrollo lo he hecho en Autoit y las pruebas contra la Web via red privada virtual (RPV) usando el mismo navegador
y sistema operativo de la plataforma, IE 6.0.2900 con SP3 en Windows XP Pro.
La sorpresa ha venido al llevarlo a los PCS de la empresa. Parte del código no funciona en ningún PC de la plataforma,
pero en el que lo desarrollé funciona perfectamente.
El error lo da al obtener el documento del contenido de un iFrame de la ventana, al final del código de ejemplo que pongo.
Código de ejemplo:
; Obtengo referencia a la ventana principal que ya está abierta
$oIE = _IEAttach ("www.nombre.com:81", "URL", 1)
If IsObj($oIE) = 0 Then
Return "Ventana principal no abierta"
EndIf
; Obtengo el documento
$oDoc = $oIE.document
If IsObj($oDoc) = 0 Then
Return "Error al obtener el documento de la ventana principal"
EndIf
; Obtengo el iFrame con id=detalle
$oFrameDetalle = $oDoc.getElementById('detalle')
If IsObj($oFrameDetalle) = 0 Then
Return "ERROR El iFrame detalle no se ha cargado"
EndIf
; Se navega a la ventana adecuada
$oFrameDetalle.src = "/jsp/BaseFlt.jsp?idAccion=31"
; Esperamos a que se cargue un máximo de 20 segundos
for $i = 1 to 40
If _IEPropertyGet ($oIE, "busy") Then
Sleep(500)
Else
ExitLoop
EndIf
Next
; Compruebo que $oFrameDetalle.contentWindow es un objeto
If IsObj($oFrameDetalle.contentWindow) = 0 Then
Return "ERROR El contentWindow del iFrame detalle no se ha cargado"
EndIf
; Aquí es donde me da el error que no puedo interceptar y se cierra el programa al acceder a 'document'
$oDocDetalle = $oFrameDetalle.contentWindow.document
Por si acaso tubiera algo que ver, he comparado las directivas de seguridad del sistema operativo en cada PC pero son iguales.
Como en la red local se accede con usuario con perfil de Usuarios he puesto el mismo perfil en el PC de desarrollo de la RPV y
sigue funcionando bien, por lo que no creo que sea un tema de permisos. Ayuda por favor, ya no se que más puede ser.
Un saludo a todos y gracias.
He realizado un programa para mi empresa que mecaniza la parte cliente repetitiva de una Web de la propia empresa y
que está dentro de su dominio (no es pública).
El desarrollo lo he hecho en Autoit y las pruebas contra la Web via red privada virtual (RPV) usando el mismo navegador
y sistema operativo de la plataforma, IE 6.0.2900 con SP3 en Windows XP Pro.
La sorpresa ha venido al llevarlo a los PCS de la empresa. Parte del código no funciona en ningún PC de la plataforma,
pero en el que lo desarrollé funciona perfectamente.
El error lo da al obtener el documento del contenido de un iFrame de la ventana, al final del código de ejemplo que pongo.
Código de ejemplo:
; Obtengo referencia a la ventana principal que ya está abierta
$oIE = _IEAttach ("www.nombre.com:81", "URL", 1)
If IsObj($oIE) = 0 Then
Return "Ventana principal no abierta"
EndIf
; Obtengo el documento
$oDoc = $oIE.document
If IsObj($oDoc) = 0 Then
Return "Error al obtener el documento de la ventana principal"
EndIf
; Obtengo el iFrame con id=detalle
$oFrameDetalle = $oDoc.getElementById('detalle')
If IsObj($oFrameDetalle) = 0 Then
Return "ERROR El iFrame detalle no se ha cargado"
EndIf
; Se navega a la ventana adecuada
$oFrameDetalle.src = "/jsp/BaseFlt.jsp?idAccion=31"
; Esperamos a que se cargue un máximo de 20 segundos
for $i = 1 to 40
If _IEPropertyGet ($oIE, "busy") Then
Sleep(500)
Else
ExitLoop
EndIf
Next
; Compruebo que $oFrameDetalle.contentWindow es un objeto
If IsObj($oFrameDetalle.contentWindow) = 0 Then
Return "ERROR El contentWindow del iFrame detalle no se ha cargado"
EndIf
; Aquí es donde me da el error que no puedo interceptar y se cierra el programa al acceder a 'document'
$oDocDetalle = $oFrameDetalle.contentWindow.document
Por si acaso tubiera algo que ver, he comparado las directivas de seguridad del sistema operativo en cada PC pero son iguales.
Como en la red local se accede con usuario con perfil de Usuarios he puesto el mismo perfil en el PC de desarrollo de la RPV y
sigue funcionando bien, por lo que no creo que sea un tema de permisos. Ayuda por favor, ya no se que más puede ser.
Un saludo a todos y gracias.