最好的办法就是引入MSHTML对象。 VB —— 引用 —— Microsoft HTML Object Library 其实pDisp对象就是浏览器的一个接口。 Dim doc1 As IHTMLDocument2在BeforeNavigate2事件,要么是NavigateComplete2事件中写如下代码(记不太清楚了,反正是两个中的一个) Set doc1 = pDisp.Document然后定义一个TIMER控件 不停的执行: on error resume next (必须有哦,起初的pDisp是什么都没有的对象,然后一点一点才有东西)Dim elementConnect As IHTMLElementCollection dim element as ihtmlelementset element = doc1.all.tags("img") '图片结点或音频结点等。 for each element in elementConnect element.setAttribute "src", "" next 以上代码不知道对错,哈哈,但是基本就是这样的。用这个思路保证没问题,也保证能解决你的问题。 不过看这几天的帖子中好象也有别的办法实现,而且根本不用webbrowser控件,你也可以找找。
BeforeNavigate2这个事件应该可以实现,就是不知道里面那些参数是什么意思。 ByVal pDisp As Object, URL As Variant, Flags As Variant, TargetFrameName As Variant, PostData As Variant, Headers As Variant, Cancel As Boolean
你有没有看我给你写的东西啊。 不过这种思路是当DOM完成了,然后通过DOM修改源码,这能够不显示图片,但我要的是不下载图片。因为这样子才可以减少传输。 我就在我写的里面告诉你了用BeforeNavigate2事件了么,你仔细看看行不?如果你说的DOM加载完成,那就不是用beforeNavigate2事件了,那就用DocumnetComplete事件了。我说的很清楚了,用的是beforeNavigate2。 你再仔细看看我上面的回答。怎么解释pDisp的。cancel是代表是否加载此连接,如果你的网页中有很多FRAME,那么可以用if url="frame网址" then cancel=true屏蔽掉。
Private Sub Command1_Click() WebBrowser1.navigate "http://www.google.com" End Sub Private Sub WebBrowser1_BeforeNavigate2(ByVal pDisp As Object, URL As Variant, Flags As Variant, TargetFrameName As Variant, PostData As Variant, Headers As Variant, Cancel As Boolean)Print URL Print "fffffff" End Sub 只显示了一次,而google里面有几个图片,如果每次下图片时都会触发,那么应该会显示几次才是的。
谁有MSHTML.dll文件的帮助文档?请发我一份[email protected] 对这个Microsoft HTML Object Library 很陌生
而且还可以通过别的方法得到HTML,不用WebBrowser1,你就找这几天的帖子,有说那个的,好象用什么HTTP之类的。
其实pDisp对象就是浏览器的一个接口。
Dim doc1 As IHTMLDocument2在BeforeNavigate2事件,要么是NavigateComplete2事件中写如下代码(记不太清楚了,反正是两个中的一个)
Set doc1 = pDisp.Document然后定义一个TIMER控件
不停的执行:
on error resume next (必须有哦,起初的pDisp是什么都没有的对象,然后一点一点才有东西)Dim elementConnect As IHTMLElementCollection
dim element as ihtmlelementset element = doc1.all.tags("img") '图片结点或音频结点等。
for each element in elementConnect
element.setAttribute "src", ""
next 以上代码不知道对错,哈哈,但是基本就是这样的。用这个思路保证没问题,也保证能解决你的问题。
不过看这几天的帖子中好象也有别的办法实现,而且根本不用webbrowser控件,你也可以找找。
不过这种思路是当DOM完成了,然后通过DOM修改源码,这能够不显示图片,但我要的是不下载图片。因为这样子才可以减少传输。
期待。
ByVal pDisp As Object,
URL As Variant,
Flags As Variant,
TargetFrameName As Variant,
PostData As Variant,
Headers As Variant,
Cancel As Boolean
不过这种思路是当DOM完成了,然后通过DOM修改源码,这能够不显示图片,但我要的是不下载图片。因为这样子才可以减少传输。
我就在我写的里面告诉你了用BeforeNavigate2事件了么,你仔细看看行不?如果你说的DOM加载完成,那就不是用beforeNavigate2事件了,那就用DocumnetComplete事件了。我说的很清楚了,用的是beforeNavigate2。
你再仔细看看我上面的回答。怎么解释pDisp的。cancel是代表是否加载此连接,如果你的网页中有很多FRAME,那么可以用if url="frame网址" then cancel=true屏蔽掉。
WebBrowser1.navigate "http://www.google.com"
End Sub
Private Sub WebBrowser1_BeforeNavigate2(ByVal pDisp As Object, URL As Variant, Flags As Variant, TargetFrameName As Variant, PostData As Variant, Headers As Variant, Cancel As Boolean)Print URL
Print "fffffff"
End Sub
只显示了一次,而google里面有几个图片,如果每次下图片时都会触发,那么应该会显示几次才是的。
对这个Microsoft HTML Object Library 很陌生
beforenavigate事件中的PDISP参数会不停的增大,因为它不停的加载原代码。(在触发beforenavigate事件时,把pDisp参数给外面,让一个Timer不停的执行,你会发现pDisp在不停的增加东西。)网页是先下代码,然后加载实际的图片,音频等。所以你在beforenavigate事件里,把pDisp的图片,音频等下载的网址全部弄没,那么以后就不会加载这些图片与音频了。