2

说,这是我的代码

将地址变暗为字符串

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

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

4

2 回答 2

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

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

于 2013-04-03T23:20:49.830 回答
2

您可以提供一个IDispatch实现,window.external但这并不容易做到 VB6。

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

于 2013-04-03T22:34:54.853 回答