vb教程:控制网页的FORMS行为(收藏)-vb教程



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\");
false;
}
</script>

<body>
<a id = ´xxx´ href=# _disibledevent=></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.Pr 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


==============================================

如何编程把用户名密码提交到网页上登录页?
首先在中加入WebbrowserControl控件并加入引用 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=\"re\" 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下SubmitControl控件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=\"re\" type=\"re\" vlaue=\"re\" =\"button\">
</form>
我本想把retype改成submit 再提交,可出错,type是只读属性,不能修改,我只要有办法把这页面递交出去就行,当然,用POST也不行,参数太多,组合方式太多


你用下面代码试下你页面:


Private Sub Command1_Click
WebBrowser1.Navigate \"\"
End Sub

Private Sub Command2_Click
Dim x

_disibledevent=>你把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

_disibledevent=>



If Err.Number = 0 Then
Debug.Pr \"Frame: \" & pBrowser.LocationURL
End If

Loop

Set pEnumerator = Nothing

End If

End Sub


=



Tags:  vb程序设计教程 vb.net教程 vb6.0教程 vb教程

延伸阅读

最新评论

发表评论