VB.NET如何拦截WebBrowser控件的javascript:launch请求阻止跳转IE/Edge
VB.NET WebBrowser控件拦截javascript:launch跳转实现方案
你可以通过WebBrowser控件自带的Navigating事件拦截所有导航请求,识别目标请求特征后取消默认行为,自定义处理跳转逻辑即可,具体实现步骤如下:
- 步骤1:为主窗体中的WebBrowser控件绑定
Navigating事件
你可以在窗体设计器中选中WebBrowser控件,在属性面板的事件列表中双击Navigating自动生成事件处理方法,也可以手动在代码中添加绑定。 - 步骤2:编写事件处理逻辑
以下是完整的事件处理代码示例,直接替换你自己的IP变量和路径拼接规则即可:
' 假设主窗体的WebBrowser控件名为mainWebBrowser,已全局存储摄像头IP变量为cameraIP Private Sub mainWebBrowser_Navigating(sender As Object, e As WebBrowserNavigatingEventArgs) Handles mainWebBrowser.Navigating ' 识别javascript:launch开头的跳转请求 Dim navigateUrl As String = e.Url.ToString() If navigateUrl.StartsWith("javascript:launch", StringComparison.OrdinalIgnoreCase) Then ' 关键:取消默认导航行为,阻止系统调用IE/Edge打开链接 e.Cancel = True ' 提取launch指令后的目标路径,适配常见的带参数写法,比如javascript:launch('config.html') ' 可根据你实际遇到的launch参数格式调整字符串提取规则 Dim targetPath As String = navigateUrl.Split("'"c)(1) ' 拼接完整的访问地址 Dim fullUrl As String = $"http://{cameraIP}/{targetPath.TrimStart("/"c)}" ' 弹出Form2加载地址,注意修改为你Form2中WebBrowser控件的实际名称 Dim launchForm As New Form2() launchForm.Show() launchForm.WebBrowser1.Navigate(fullUrl) End If End Sub
注意:
e.Cancel = True是阻止系统启动外部浏览器的核心代码,只要在事件触发时将该属性设为True,就不会触发默认的跳转逻辑。
内容的提问来源于stack exchange,提问作者ARandomGuyOnTheWeb
相关产品推荐
相关产品推荐

