2013-04-03 65 views
1

说,这是我的代码如何在VB6中使用execScript检索表单值?

为字符串

WebBrowser1.Document.parentWindow.execScript( “风险价值= document.form1.address.text”, “JavaScript的”)

昏暗地址

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

+0

相关问题:[在vb6的WebBrowser控件中检索Javascript函数的返回值](http://stackoverflow.com/q/9005914/588306) – Deanna 2013-04-05 09:29:47

回答

4

您可以使用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将不起作用)。花了一些时间来解决这个问题。

+0

如果全局命名空间状态持续执行脚本,比这个解释是一个比我的导航黑客更好的方法。 – wqw 2013-04-04 11:37:58

2

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

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

相关问题