小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Winform 使用WebView2 開發(fā)現(xiàn)代應(yīng)用

 黃爸爸好 2024-12-22

WebView2 是 Microsoft 提供的一種嵌入式瀏覽器控件,基于 Edge (Chromium) 引擎。

它允許開發(fā)者將現(xiàn)代 Web 技術(shù)(如 HTML、CSS 和 JavaScript)與桌面應(yīng)用相結(jié)合,從而構(gòu)建強(qiáng)大、靈活的用戶界面。

本文將介紹 WebView2 的基本使用,并重點講解以下幾個重要功能:

  • NewWindowRequested

  • WebResourceResponseReceived

  • AddWebResourceRequestedFilter

  • WebResourceRequested

環(huán)境準(zhǔn)備

  1. 安裝 WebView2 Runtime:WebView2 需要運(yùn)行時支持,用戶設(shè)備必須安裝 WebView2 Runtime。如果未安裝,可以通過以下鏈接下載:https://go.microsoft.com/fwlink/p/?LinkId=2124703。

  2. 引入必要的 NuGet 包:在 Visual Studio 中,添加 Microsoft.Web.WebView2 NuGet 包。

  3. 初始化 WebView2:創(chuàng)建 WebView2 控件并確保其已正確初始化。以下代碼檢查并安裝 WebView2 Runtime:

private static async Task<bool> InitializeWebView2(){    try    {        string version = CoreWebView2Environment.GetAvailableBrowserVersionString();        return !string.IsNullOrEmpty(version);    }    catch    {        // 引導(dǎo)用戶安裝 WebView2 Runtime        MessageBox.Show('WebView2 Runtime 未安裝。請安裝后重試。', '錯誤', MessageBoxButtons.OK, MessageBoxIcon.Error);        return false;    }}

創(chuàng)建 WebView2 控件

以下代碼展示了如何創(chuàng)建 WebView2 控件并初始化其核心功能:

public static async Task<WebView2> CreateWebView(){    if (!await InitializeWebView2())    {        return null;    }    WebView2 webView2 = new WebView2    {        Dock = DockStyle.Fill    };    await webView2.EnsureCoreWebView2Async(null);    // 注冊事件    webView2.CoreWebView2.NewWindowRequested += CoreWebView2_NewWindowRequested;    webView2.CoreWebView2.WebResourceResponseReceived += CoreWebView2_WebResourceResponseReceived;    // 添加請求過濾器    webView2.CoreWebView2.AddWebResourceRequestedFilter('*://www.example.com/*', CoreWebView2WebResourceContext.Document);    webView2.CoreWebView2.WebResourceRequested += WebView2_WebResourceRequested;    return webView2;}

攔截新窗口請求:NewWindowRequested

默認(rèn)情況下,WebView2 會嘗試在新窗口中打開彈出鏈接。通過 NewWindowRequested 事件,我們可以攔截彈窗行為并將新內(nèi)容加載到當(dāng)前窗口。

示例代碼:

private static void CoreWebView2_NewWindowRequested(object sender, CoreWebView2NewWindowRequestedEventArgs e){    if (sender is CoreWebView2 webView)    {        e.Handled = true// 阻止默認(rèn)彈窗行為        webView.Navigate(e.Uri); // 在當(dāng)前 WebView2 中加載新頁面    }}

攔截和處理網(wǎng)絡(luò)響應(yīng):WebResourceResponseReceived

通過 WebResourceResponseReceived,我們可以查看并分析所有網(wǎng)絡(luò)響應(yīng)。例如,可以記錄某些請求的響應(yīng)時間或檢查響應(yīng)頭信息。

示例代碼:

private static void CoreWebView2_WebResourceResponseReceived(object sender, CoreWebView2WebResourceResponseReceivedEventArgs e){    var uri = e.Request.Uri;    Console.WriteLine($'Response received for: {uri}');    e.Response.Headers.ToList().ForEach(header =>    {        Console.WriteLine($'Header: {header.Key} - {header.Value}');    });}

添加請求過濾器:AddWebResourceRequestedFilter

為了提高性能并精確控制,WebView2 提供了 AddWebResourceRequestedFilter 方法,用于定義需要監(jiān)聽的請求類型和范圍。

使用方法:

webView.CoreWebView2.AddWebResourceRequestedFilter(    '*://www.example.com/*'// 目標(biāo) URL 模式    CoreWebView2WebResourceContext.Document // 資源類型:僅文檔);

攔截網(wǎng)絡(luò)請求:WebResourceRequested

通過 WebResourceRequested 事件,可以攔截網(wǎng)絡(luò)請求并進(jìn)行處理,例如修改請求頭或阻止特定請求。

示例代碼:

private static async void WebView2_WebResourceRequested(object sender, CoreWebView2WebResourceRequestedEventArgs e){    var request = e.Request;    // 檢查是否有特定 Cookie    if (sender is CoreWebView2 webView)    {        var cookies = (await webView.CookieManager.GetCookiesAsync(request.Uri))                        .Where(c => c.Name == 'SpecificCookie').ToList();        if (cookies.Any())        {            // 刪除特定 Cookie            cookies.ForEach(c => webView.CookieManager.DeleteCookie(c));        }    }    Console.WriteLine($'Request intercepted: {request.Uri}');}

總結(jié)

WebView2 是一個強(qiáng)大的控件,為開發(fā)者提供了豐富的功能來控制和定制 Web 資源的加載行為。通過本文介紹的事件和方法,你可以:

  • 阻止默認(rèn)彈窗行為 (NewWindowRequested)
  • 分析網(wǎng)絡(luò)響應(yīng) (WebResourceResponseReceived)
  • 精確過濾需要攔截的請求 (AddWebResourceRequestedFilter)
  • 修改或阻止網(wǎng)絡(luò)請求 (WebResourceRequested)

借助這些功能,可以更靈活地將 Web 內(nèi)容集成到桌面應(yīng)用程序中,滿足各種業(yè)務(wù)需求。

關(guān)注獲取技術(shù)分享

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多