说,这是我的代码
Dim Address as string
WebBrowser1.Document.parentWindow.execScript(“var a = document.form1.address.text“,”JavaScript“)
如何将document.form1.address.text
的值提取到我的VB6变量Address
?
答案 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¶m2=anothervalue
,检测“回调”主机,解析参数并取消导航。