vb6 - resueltos - qué es un evento en visual basic y cuáles son
¿Cómo recuperar el valor del formulario con execScript en VB6? (2)
Diga, este es mi código
Dim Dirección como cadena
WebBrowser1.Document.parentWindow.execScript ("var a = document.form1.address.text", "JavaScript")
¿Cómo puedo extraer el valor de document.form1.address.text
a mi Address
variable VB6?
Puede proporcionar una implementación IDispatch
a window.external
pero esto no es fácil de hacer VB6.
Más fácil sería usar la location
en JS para navegar a una dirección que puede capturar en el evento Navigate
en VB6, por ejemplo, http://callback?param=value¶m2=anothervalue
, detectar el host de "devolución de llamada", analizar los parámetros y cancelar la navegación.
Puedes usar DOM.
Digamos que tenemos un formulario HTML simple:
<html>
<body>
<form name="form1">
Address: <input type="text" id="address">
</form>
</body>
</html>
Después de cargarlo en un control WebBrowser
y asegurarse de que DOM esté listo, podemos obtener el campo del texto de la address
de la siguiente manera:
Private Sub cmdGetAddressText_Click()
Dim HTMLElement As Object
Dim Address As String
Set HTMLElement = WebBrowser1.Document.GetElementByID("address")
Address = HTMLElement.Value
MsgBox Address
End Sub
Editar:
Es incluso más simple que eso. Puede acceder al valor del campo directamente desde VB6:
Address = WebBrowser1.Document.Form1.Address.Value
Editar # 2
También es posible obtener un valor de una variable de JavaScript si lo desea:
Private Sub cmdJSVar_Click()
Dim Address As String
Call WebBrowser1.Document.parentWindow.execScript("var a=document.form1.address.value; alert(a);")
Address = WebBrowser1.Document.Script.a
MsgBox Address
End Sub
Observe que el nombre de la variable JS en .Script.a
mayúsculas y minúsculas (es decir, .Script.A
no funcionará). Tomó un tiempo para resolver esto.