WebView2簡單試用(九)—— Dev Protocol


有的時候,我們需要實現一些更為高級的操作,以提供更個性化的功能。常用的注入JavaScript的方式已經不能滿足我們的要求,此時可以使用Chromium提供的更為高級的API——Chrome Dev Protocol

關於Dev Protocol,我之前寫過幾篇文章介紹過:

簡單的來講,通過F12調出的DevTool里能實現的功能它都能實現,網上也有大量的文章介紹它,我這里就不重復介紹了。本文這里只是介紹下WebView2中使用DevProtocol的方式。

在WebView2中,我們可以和前面的文章中介紹的一樣,通過--remote-debugging-port參數開放調試端口,用websocket的方式來驅動。

    var env = await CoreWebView2Environment
                  .CreateAsync(options:new CoreWebView2EnvironmentOptions(
                                "--remote-debugging-port=9222"));
    await webView.EnsureCoreWebView2Async(env);

除此之外,WebView2也提供了無需通過WebSocket作為中介,直接訪問的方法:

  • CoreWebView2.CallDevToolsProtocolMethodAsync
  • CoreWebView2.GetDevToolsProtocolEventReceiver

 基本上從名稱中就可以看出使用方法,執行命令和注冊回調。一個簡單的示例如下:

    await webView.CoreWebView2.CallDevToolsProtocolMethodAsync("Network.enable""{}");
    var eventRecieiver = webView.CoreWebView2.GetDevToolsProtocolEventReceiver("Network.requestWillBeSent");
    eventRecieiver.DevToolsProtocolEventReceived += (se) =>
    {
        Console.WriteLine(e.ParameterObjectAsJson"\n");
    };

示例進行了兩步操作:1. 執行命令Network.enable,啟用Network事件回調,2. 注冊Network.requestWillBeSent回調,命令執行完后,再訪問任何頁面時,即可獲取當前發送的所有請求信息:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM