如何在VB6中使用execScript检索表单值?

如何在VB6中使用execScript检索表单值?,vb6,Vb6,喂,这是我的密码 作为字符串的Dim地址 WebBrowser1.Document.parentWindow.execScript(“变量a= document.form1.address.text“JavaScript”) 如何将document.form1.address.text的值提取到我的VB6变量address?您可以为窗口提供IDispatch实现。外部,但这在VB6中并不容易实现 使用JS中的位置导航到一个地址更容易,您可以在VB6中的导航事件中捕获该地址,例如http://ca

喂,这是我的密码

作为字符串的Dim地址

WebBrowser1.Document.parentWindow.execScript(“变量a= document.form1.address.text“JavaScript”)


如何将
document.form1.address.text的值提取到我的VB6变量
address

您可以为
窗口提供
IDispatch
实现。外部
,但这在VB6中并不容易实现

使用JS中的
位置
导航到一个地址更容易,您可以在VB6中的
导航
事件中捕获该地址,例如
http://callback?param=value¶m2=anothervalue
,检测“回调”主机,解析参数并取消导航。

您可以使用DOM

假设我们有一个简单的HTML表单:

<html>
<body>
    <form name="form1">
        Address: <input type="text" id="address">
    </form> 
</body>
</html>
编辑:

比那还要简单。您可以直接从VB6访问字段值:

Address = WebBrowser1.Document.Form1.Address.Value
编辑#2

如果您希望获取JavaScript变量的值,也可以这样做:

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

请注意,
.Script.a
中的JS变量名区分大小写(即,
.Script.a
不起作用)。花了一些时间才弄明白这一点。

如果全局命名空间状态持续存在脚本执行,那么这个解释比我的导航破解要好得多。相关问题:
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