VB webbrowser 浏览器
在VB(Visual Basic)编程环境中,`WebBrowser`控件是一个强大的工具,它允许开发者集成一个内置的浏览器功能到他们的应用程序中。这个控件能够显示HTML页面,执行JavaScript,并与网页进行交互。在这个特定的场景中,我们关注的是如何利用`WebBrowser`控件来实现特定的用户行为控制,即屏蔽自动弹出窗口,只允许用户通过鼠标点击来触发下载。 自动弹出窗口通常是由于网页中的JavaScript代码或某些链接属性导致的。在VB应用中使用`WebBrowser`控件时,可以通过监听和处理控件的事件来阻止这些行为。关键在于捕获并拦截可能导致弹窗的事件,比如`DocumentComplete`或`NewWindow3`事件。 1. **屏蔽自动弹出窗口**:通常,当网页尝试打开新窗口时,`WebBrowser`控件会触发`NewWindow3`事件。我们可以在这事件的事件处理函数中设置`e.Cancel = True`,阻止新的窗口打开。同时,需要确保`WebBrowser1.AllowNavigation = False`以防止直接导航。 2. **仅允许鼠标点击下载**:为了实现这一点,我们需要监听`DocumentElement.onclick`事件。VB中可以这样设置: ```vb WebBrowser1.DocumentCompleted += New WebBrowserDocumentCompletedEventHandler(WebBrowser1_DocumentCompleted) ``` 在`WebBrowser1_DocumentCompleted`事件处理函数中,添加对`onclick`事件的监听: ```vb Dim htmlDoc As HtmlDocument = WebBrowser1.Document htmlDoc.Body.AttachEventHandler("onclick", AddressOf BodyOnClick) ``` 在`BodyOnClick`事件处理函数中,检查点击是否触发了下载: ```vb Private Sub BodyOnClick(sender As Object, e As HtmlElementEventArgs) If CheckIfDownloadLink(e.ToElement) Then ' 允许下载逻辑 End If End Sub ``` `CheckIfDownloadLink`函数需要自定义,用于判断点击的元素是否为下载链接。 3. **检查和触发下载**:在`BodyOnClick`中,如果发现用户点击的是下载链接,我们可以手动触发下载。这通常涉及到获取链接的URL,然后使用`SaveFileDialog`或者直接使用`WebClient`类来保存文件。例如: ```vb Dim url As String = e.ToElement.GetAttribute("href") If Not String.IsNullOrEmpty(url) AndAlso url.ToLower().EndsWith(".pdf") OrElse url.ToLower().EndsWith(".docx") Then ' 示例检查文件类型 ' 使用SaveFileDialog或者WebClient下载 End If ``` 通过以上步骤,我们构建了一个定制的`WebBrowser`控件,它可以防止不必要的弹出窗口并限制下载只在用户点击时发生。`myIE v0.1`可能就是这样一个实现的示例应用,具体实现细节需要查看源代码来进一步了解。这个应用对于那些希望控制用户浏览体验,特别是对于企业内部应用或者教育环境的应用非常有用,因为它能确保用户不会被不期望的窗口打扰,同时安全地进行下载操作。
- 1
- zengxiaoh2012-01-09还是不能过滤某些自动弹出页面
- marikis20062012-10-08代码有待优化
- huangtao04162012-09-23总体不错,点击“网址”有报错。
- hdx_1232013-03-09总体不错,点击“网址”有报错。
- haoliao20002013-03-01代码很乱,初学者有一定的参考价值
- 粉丝: 2
- 资源: 4
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 流量查看工具GlassWire-Elite 3.3.678 多国语言安装包
- PHP协同OA网络办公系统源码数据库 MySQL源码类型 WebForm
- oracle java perl ok
- (源码)基于SpringBoot和Vue的宿舍管理系统.zip
- rv1126-rv1109-add-camera-gc2053-gc4653-②
- (源码)基于.NETCore的仓库管理系统.zip
- (源码)基于SpringBoot和Vue的分布式配置管理系统.zip
- 地下水动力学真题,有需要的自行下载,考研真题
- (源码)基于JavaServlet的河北重大需求分析系统.zip
- mysql-8.0.33-winx64.zip