WebView2 控件(基于 Microsoft Edge (Chromium) 的嵌入式浏览器控件),获取网页加载资源

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,182元/月
云原生网关 MSE Higress,422元/月
MSE Nacos/ZooKeeper 企业版试用,1600元额度,限量50份
简介: WebView2 控件,获取网页加载资源

 WebView2 CSSAJAX

1. 使用 WebResourceRequested 事件(基础方法)

await webView.EnsureCoreWebView2Async();

// 订阅Web资源请求事件
webView.CoreWebView2.WebResourceRequested += (sender, args) => 
{
    string url = args.Request.Uri;
    string method = args.Request.Method;
    
    // 获取资源类型(通过Content-Type或文件扩展名)
    string resourceType = "Unknown";
    if (args.Response != null)
    {
        string contentType = args.Response.Headers.GetHeader("Content-Type")?.ToLower();
        
        if (contentType.Contains("text/css")) resourceType = "CSS";
        else if (contentType.Contains("javascript")) resourceType = "JS";
        else if (contentType.Contains("image/")) resourceType = "Image";
        // 其他类型判断...
    }
    
    // 输出资源信息
    Debug.WriteLine($"Resource: {url}, Type: {resourceType}, Method: {method}");
};

2. 使用 DevTools Protocol

await webView.EnsureCoreWebView2Async();

// 启用网络跟踪
await webView.CoreWebView2.CallDevToolsProtocolMethodAsync("Network.enable", "{}");

// 创建资源列表
List<WebResource> resourceList = new List<WebResource>();

// 订阅网络响应事件
var receiver = webView.CoreWebView2.GetDevToolsProtocolEventReceiver("Network.responseReceived");
receiver.DevToolsProtocolEventReceived += (sender, e) => 
{
    dynamic response = Newtonsoft.Json.JsonConvert.DeserializeObject(e.ParameterObjectAsJson);
    
    string url = response.response.url;
    string mimeType = response.response.mimeType;
    int status = response.response.status;
    
    // 添加到资源列表
    resourceList.Add(new WebResource
    {
        Url = url,
        MimeType = mimeType,
        StatusCode = status,
        ResourceType = response.type.ToString()
    });
    
    // 实时显示
    Debug.WriteLine($"Loaded: {url} ({mimeType})");
};

// 定义资源类
public class WebResource
{
    public string Url { get; set; }
    public string MimeType { get; set; }
    public int StatusCode { get; set; }
    public string ResourceType { get; set; }
}



目录
相关文章
|
2月前
|
前端开发
WebView2 控件(基于 Microsoft Edge (Chromium) 的嵌入式浏览器控件),保存资源(图片、脚本、CSS)
WebView2 控件(基于 Microsoft Edge (Chromium) 的嵌入式浏览器控件),保存资源(图片、脚本、CSS)
173 15
|
API Android开发 数据安全/隐私保护
解决android webview 加载http url 失败 net::ERR_CLEARTEXT_NOT_PERMITTED 错误
解决android webview 加载http url 失败 net::ERR_CLEARTEXT_NOT_PERMITTED 错误
2139 0
|
Web App开发 移动开发 前端开发
52. 【Android教程】网页视图:WebView
52. 【Android教程】网页视图:WebView
301 1
|
Web App开发 JavaScript 前端开发
Android端使用WebView注入一段js代码实现js调用android
Android端使用WebView注入一段js代码实现js调用android
300 0
|
Android开发 iOS开发 UED
Android webView 实现阻尼回弹效果
iOS webView默认滑动到顶部或者底部的时候,还可以继续通过手指拉扯滑动,松手后回弹;而Android webView默认是不行的,要实现跟iOS一样的效果,就需要自定义webView。
716 0
|
Android开发
Android WebView选择图片、发送图片
Android WebView选择图片、发送图片
708 0
|
JavaScript 前端开发 Android开发
android开发,使用kotlin学习WebView(详细)
android开发,使用kotlin学习WebView(详细)
745 0
|
定位技术 Android开发
[√]Android webview的url scheme
[√]Android webview的url scheme
789 0
|
JavaScript 前端开发 Android开发
Android AgentWeb WebView 与js交互总结
Android AgentWeb WebView 与js交互总结
552 0
|
XML 移动开发 数据可视化
每日记录自己的Android项目(二)—Viewbinding,WebView,Navigation
今天是想把做一个跳转页面的时候调到H5页面去,但是这个页面我用app来承载,不要调到浏览器去。
306 0
每日记录自己的Android项目(二)—Viewbinding,WebView,Navigation