NavigationStarting

NavigationStarting在导航到新页面之前触发,此时网络请求还没有发送。

这个事件的主要作用为:审查即将跳转的 URL,必要时予以拦截。

e参数属性:

属性名 类型 说明
Uri String 即将导航到的目标 URL(核心属性)
Cancel Boolean 设为True可取消本次导航(最常用)
IsUserInitiated Boolean 是否由用户主动操作触发(如点击链接、输入地址)
NavigationId ULong 本次导航的唯一ID(也就是框架ID,用于关联后续事件)
IsRedirected Boolean 是否是重定向导航
NavigationKind CoreWebView2NavigationKind 导航类型,Reload为刷新,BackOrForward为后退或前进,NewDocument为新页面
RequestHeaders CoreWebView2HttpRequestHeaders 包括所有请求头,可访问,不能修改

提示:请拷贝示例文件"CaseStudy\WebViewer\简单浏览器.Table",然后基于拷贝测试本节示例代码,避免被不相干的代码干扰。

示例一

可以建立一个黑名单,禁止用户访问黑名单中的域名,例如将NavigationStarting事件代码设置为:

Dim blockedDomains As String() = {"jd.com", "taobao.com"} '黑名单域名,这里用小写
For
Each domain As String In blockedDomains
   
If e.Uri.ToLower().Contains(domain) Then '判断是否是黑名单中的域名,注意url转为小写再判断
        e.Cancel =
True '如果是的,则取消访问
        MessageBoxA.Show(
"禁止访问目标域名", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning) '提示
   
End If
Next

示例二

实现白名单的代码稍微复杂点,参考代码如下:

Dim wv As WebViewer = e.Form.Controls("WebViewer1").WebViewer
Dim
allowedDomains As String() = {"163.com", "sina.com"} '白名单域名,这里用小写
Dim
inList As Boolean = False '标记变量
Dim
uri As String = e.Uri.ToLower() 'uri转为小写,方便比较
If
uri.StartsWith("data:") OrElse uri.StartsWith("about:" Then'如果是内部协议
   
Return '允许访问
End
If
For
Each domain As String In allowedDomains
   
If e.Uri.ToLower().Contains(domain) Then '判断是否是白名单中的域名,注意url转为小写再判断
        inList =
True
   
End If
Next
If
Not inList Then '如果不在白名单中
    e.Cancel =
True '取消访问
    wv.CoreWebView2.NavigateToString(
"不能访问白名单之外的域名!") '换个提示方式
End
If


本页地址:http://www.foxtable.com/webhelp/topics/6207.htm