2013-04-03 39 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,檢測「回調」主機,解析參數並取消導航。

相關問題