You need to enable JavaScript to run this app. VB.NET如何拦截WebBrowser控件的javascript:launch请求阻止跳转IE/Edge
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 00:54:02