公交车上荫蒂添的好舒服的电影-公用玩物(np双xing总受)-公用小荡货芊芊-公与妇仑乱hd-攻把受做哭边走边肉楼梯play-古装一级淫片a免费播放口

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

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

admin
2025年1月18日 14:54 本文熱度 855

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

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

本文將介紹 WebView2 的基本使用,并重點(diǎn)講解以下幾個(gè)重要功能:

  • NewWindowRequested
  • WebResourceResponseReceived
  • AddWebResourceRequestedFilter
  • WebResourceRequested

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

  1. 安裝 WebView2 Runtime: WebView2 需要運(yùn)行時(shí)支持,用戶設(shè)備必須安裝 WebView2 Runtime。如果未安裝,可以通過(guò)以下鏈接下載: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 未安裝。請(qǐng)安裝后重試。", "錯(cuò)誤", 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);    // 注冊(cè)事件    webView2.CoreWebView2.NewWindowRequested += CoreWebView2_NewWindowRequested;    webView2.CoreWebView2.WebResourceResponseReceived += CoreWebView2_WebResourceResponseReceived;    // 添加請(qǐng)求過(guò)濾器    webView2.CoreWebView2.AddWebResourceRequestedFilter("*://www.example.com/*", CoreWebView2WebResourceContext.Document);    webView2.CoreWebView2.WebResourceRequested += WebView2_WebResourceRequested;    return webView2;}

攔截新窗口請(qǐng)求:NewWindowRequested

默認(rèn)情況下,WebView2 會(huì)嘗試在新窗口中打開(kāi)彈出鏈接。通過(guò) 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 中加載新頁(yè)面    }}

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

通過(guò) WebResourceResponseReceived,我們可以查看并分析所有網(wǎng)絡(luò)響應(yīng)。例如,可以記錄某些請(qǐng)求的響應(yīng)時(shí)間或檢查響應(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}");    });}

添加請(qǐng)求過(guò)濾器:AddWebResourceRequestedFilter

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

使用方法:

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

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

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

示例代碼:

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 是一個(gè)強(qiáng)大的控件,為開(kāi)發(fā)者提供了豐富的功能來(lái)控制和定制 Web 資源的加載行為。通過(guò)本文介紹的事件和方法,你可以:

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

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


閱讀原文:原文鏈接


該文章在 2025/1/18 18:17:44 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 国产精品一区不卡 | 韩国免费a级作爱片在线观看 | av在线国产哟哟 | 国产一区二区不卡老阿姨 | 2025无码最新国产在线观看 | 91热久久免费频精品无码69 | 国产精品欧美亚洲韩国日本久 | 国产精品日日摸夜夜添夜夜添1 | 国产一区二区三区四区五区视频 | 国产成人精品久久亚洲高清 | av三级片在线观看 | av片在线播放 | 国产人妖视频一区二区女 | 国产午夜精品一区理论片飘花 | 国产aⅴ无码一区二区三区 国产aⅴ无码专区久久精品国产 | 国产无你高清在线观看av | 精品国产一区二区三区久久久蜜臀 | 国产精品特级毛片一区二区三区 | 国产精品无码片在线看 | 国产亚洲欧洲人人网详情 | 成人区人妻精品一区二区三区 | 国产不卡视频一区二区三区 | 97人妻碰碰碰久久久久禁片 | 国产国语成人三级丰满激情视频在线 | 国产按摩推油一区二区三区在线 | 国产精品国产精品专区不卡 | 18禁无遮挡啪啪无码网站破解版 | 2025亚洲国产精品无码 | 国产精品毛片久久久久久久av | av片亚洲国产男人的天堂 | 国产高清精品自拍av | 东京热tokyo无 | 国产私人尤物无码不卡 | 国产福利一区二区三区在线视频 | 91麻豆精品福利在线观看 | 国产精品无码精品久久久 | 91精品欧美 | 97人妻免费在线视频中文 | 精品亚洲欧美v国产一区二区 | 国产最新在线视频 | 国产猛烈高潮尖叫视频免费 |