控制網頁的FORMS行為
Private Sub Command2_Click()
With WebBrowser1.Document.Forms(0)
.c2.Checked = 1
.r1(1).Checked = 1
End With
End Sub
Private Sub Command2_Click()
With WebBrowser1.Document.Forms(0)
.d1.Options(1).Selected = 1
End With
End Sub
web.Document.getElementsByName("D1").Item(0).selectedIndex = 1
==============================================
<input type="radio" value="n" checked name="notecome">普通
<input type="radio" value="c" name="notecome">原創
<input type="radio" value="z" name="notecome">轉帖
<input type="button" value="發送提交" name="button"
比如一個網頁里有如上代碼
我想選擇原創
webbrowser中怎么寫
Private Sub Command1_Click()
WebBrowser1.Navigate "c:\ggg.html"
End Sub
Private Sub Command2_Click()
Dim x
For Each x In WebBrowser1.Document.All("notecome")
If x.Value = "c" Then
x.Checked = True
End If
Next
End Sub
============================================================================================
假設你的HTML代碼如下:
<html>
<script>
function abcd(){
alert("haha");
return false;
}
</script>
<body>
<a id = ´xxx´ href=# onclick="abcd()">ggggg</a>
</body>
</html>
VB代碼如下:
Private Sub Command1_Click()
WebBrowser1.Navigate ""
End Sub
Private Sub Command2_Click()
Dim a, b
Dim d As IHTMLDocument2
For Each a In WebBrowser1.Document.All
Debug.Print a.tagName
If (a.tagName = "SCRIPT") Then
End If
If (a.tagName = "A") Then
If a.Id = "xxx" Then
a.FireEvent ("onclick")
End If
End If
Next
點擊Command1瀏覽這個網頁,點擊Command2運行其中的腳本abcd。
==============================================
怎么編程把用戶名,密碼提交到網頁上的登錄頁?
首先在程序中加入Webbrowser控件并加入引用 Microsoft HTML Object Library。
假設你的HTML頁面表單代碼如下:
<form method="POST" action="">
<p>請填寫下面表單注冊(*項為必添項)</p>
<p>*姓名<input type="text" name="Name" size="20"></p>
<p>*昵稱<input type="text" name="NickName" size="20"></p>
<p>電子郵件<input type="text" name="EMail" size="20"></p>
<p>*密碼<input type="text" name="Password" size="20"></p>
<p><input type="submit" value="提交" name="B1"><input type="reset" value="全部重寫" name="B2"></p>
</form>
注意其中元素的type、Name、value屬性。然后VB中的代碼如下:
Private Sub Command1_Click()
WebBrowser1.Navigate ""
End Sub
Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
Dim vDoc, vTag
Dim i As Integer
Set vDoc = WebBrowser1.Document
List1.Clear
For i = 0 To vDoc.All.length - 1
If UCase(vDoc.All(i).tagName) = "INPUT" Then
Set vTag = vDoc.All(i)
If vTag.Type = "text" Or vTag.Type = "password" Then
List1.AddItem vTag.Name
Select Case vTag.Name
Case "Name"
vTag.Value = "IMGod"
Case "NickName"
vTag.Value = "IMGod"
Case "Password"
vTag.Value = "IMGodpass"
Case "EMail"
vTag.Value = ""
End Select
ElseIf vTag.Type = "submit" Then
vTag.Click
End If
End If
Next i
End Sub
點擊Command1就可以自動填表并提交了。
=====================================================================================
調用forms下的Submit控件的Click事件,我會做,但我不想這么做.
有沒有辦法直接調用類似于:web1.document.forms.submit,這句語句我怎么寫都不成功
是這個
Webbrowser1.document.formName.submit()
不能用,formname為form1所以我調用Webbrowser1.document.form1.submit
出錯類型:對象不支持該屬性或方法,
然后調用Webbrowser1.document.forms(0).submit()
出錯類型同上
Private Sub Command1_Click()
WebBrowser1.Navigate ""
End Sub
Private Sub Command2_Click()
WebBrowser1.Document.All("Form1").submit
End Sub
<form name="form1" method="post" action="aa.asp">
......
<input name="reset" type="reset" vlaue="reset" class="button">
</form>
我本想把reset的type改成submit 再提交,可出錯,type是只讀屬性,不能修改,我只要有辦法把這頁面遞交出去就行,當然,用POST也不行,參數太多,組合方式太多
你用下面的代碼試一下你的頁面:
Private Sub Command1_Click()
WebBrowser1.Navigate ""
End Sub
Private Sub Command2_Click()
Dim x
On Error Resume Next
For Each x In WebBrowser1.Document.All
List1.AddItem x.Name
Next
End Sub
看看在List1里面列出來的頁面元素的名字有沒有Form1
找到原因了,你的頁面是這樣的:
<input language="javascript" onclick="if (typeof(Page_ClientValidate) == ´function´) Page_ClientValidate(); " name="Submit1" id="Submit1" type="submit" value="Submit" />
你把name="Submit1" 改成name="Submit"肯定就不會成功了,很不幸的是我要提交的頁面中就有這樣一句,現在可有辦法解決嗎???
=======================================================================
使用WebBrowser_V1接受消息
Private WithEvents WebMessage As WebBrowser_V1
Private Sub Form_Load()
Set WebMessage = WebBrowser1.Object
End Sub
Private Sub WebMessage_NewWindow(ByVal URL As String, ByVal Flags As Long, ByVal TargetFrameName As String, PostData As Variant, ByVal Headers As String, Processed As Boolean)
´這里有Flags變量可以取得窗體應有的狀態
End Sub
具體值需要你自己去試試看。對象瀏覽器里面沒有
=======================================================================================================
通過下面的方法遍歷頁面中的IFrame:
Sub EnumFrames(ByVal wb As WebBrowser)
Dim pContainer As olelib.IOleContainer
Dim pEnumerator As olelib.IEnumUnknown
Dim pUnk As olelib.IUnknown
Dim pBrowser As SHDocVw.IWebBrowser2
Set pContainer = wb.Object.Document
´ Get an enumerator for the frames
If pContainer.EnumObjects(OLECONTF_EMBEDDINGS, pEnumerator) = 0 Then
Set pContainer = Nothing
´ Enumerate and refresh all the frames
Do While pEnumerator.Next(1, pUnk) = 0
On Error Resume Next
´ Clear errors
Err.Clear
´ Get the IWebBrowser2 interface
Set pBrowser = pUnk
If Err.Number = 0 Then
Debug.Print "Frame: " & pBrowser.LocationURL
End If
Loop
Set pEnumerator = Nothing
End If
End Sub
=======================================================================================
原文轉自:http://www.anti-gravitydesign.com