我做了一个程序,希望它能完成以下的功能
打开一个html文档,分析里头的超级链接,根据我的需要找到符合条件的超级链接,跳转到这个超级链的网页。
我现在是分析webbrowser1.documents.links.item(i).outhtml,觉得很麻烦,而且如果是相对路径
分析起来就会出错。。。还有一些带脚本的超级链接也无法跳转。
我想是我的方法太笨了吧,是不是webbrowser里头就有这样一个方法能够在我找到这个链接的时候自动去跳转的。
我现在的程序段是这样写的:
现有的控件:
WBS1 是webbrowser控件,它的状态是已经打开了一个网址。
TextBox1 里头手工输入一小段文本
Button
我希望如果在网页中的超级链接显示的文字如果包含textbox1里头的文字,那么就跳转到那个链接的地址去。
Private Sub GoToTargetLink()
Dim strURL As String
Dim strHtml As string
Dim strName As string
Dim I As Integer
For I = 0 To WBS1.Document.Links.Count - 1
strHtml = WBS1.Document.Links.Item(I).OuterHtml
strName = WBS1.Document.Links.Item(I).OuterText
If strName.Contains(TextBox1.Text) Then
strUrl = "http" & GetInter(strHtml, "http", """") '这里把OuterHtml里头的包含http 和
'双引号中间的部分提取出来。
WBS1.Navigate(strUrl) '这里用webbrowser.navigate函数跳转。
Exit Sub '跳转成功就跳出了。
End If
Next
End Sub
'下面是自己写的 GetInter函数,把介于第一个文本中的介于,第二个文本和第三个文本之间的文本提取出来返回。
Public Function GetInter(ByVal strOrigin As String, ByVal strStart As String, ByVal strEnd As String) As String
Dim I, J As Integer
I = strOrigin.IndexOf(strStart) + strStart.Length
J = strOrigin.IndexOf(strEnd, I)
GetInter = strOrigin.Substring(I, J - I)
End Function
还有一个button1_clikc() 就是调用 GoToTargetLink() 省略了。
-----------------------------------------------
现在的问题是WBS1.Document.Links.Item(I).OuterHtml里头不一定含有 "http"字段,还有可能是javascript,也可能相对路径之类的我的程序就无能为力了。
OutHtml里头的可能性很多,编程来分析它太繁琐了,有没有别的方法实现跳转的。
有一个解决方法可能比较直接,是不是要找到超级链接控件的位置,调用WinApi用鼠标点它?
可是我不会写有没有人教教我。
请多指教啊。
[此贴子已经被作者于2007-10-25 9:40:37编辑过]