如何在VB6中使用exec脚本检索表单值?

时间:2013-04-03 21:55:54

标签: vb6

说,这是我的代码

  

Dim Address as string

     

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

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

2 个答案:

答案 0 :(得分:5)

您可以使用DOM。

我们说我们有简单的HTML表单:

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

将其加载到WebBrowser控件中并确保DOM准备就绪后,我们可以通过以下方式获取address字段的文本:

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

修改

它比那更简单。您可以直接从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不起作用)。花了一些时间来解决这个问题。

答案 1 :(得分:2)

您可以向IDispatch提供window.external实施,但这对VB6来说并不容易。

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