[C#] 如何在 Edge WebView2 中注入和使用 JQuery 來改變網頁內容
上一篇文章簡單的介紹了 Edge WebView2 的套件,接下來,就是比較要做的常規操作,就是我們要 inject 一些 js 進去
今天主要目的就是,載入網頁後,在 inject JQuery 之後再呼叫一行 JQuery 的程式去改變網頁上面的內容.
1.參考 簡單使用
Microsoft Edge WebView2 在 WinForms 中的應用 安裝 Edge WebView2
2.接下來我們必須要 在網頁載入完成後插入 JQuery 的動作
public Form1() | |
{ | |
InitializeComponent(); | |
webView21.EnsureCoreWebView2Async(); | |
webView21.CoreWebView2InitializationCompleted += WebView21_CoreWebView2InitializationCompleted; | |
//網頁載入完畢後執行 | |
webView21.NavigationCompleted += WebView21_NavigationCompleted; | |
} | |
private async void WebView21_NavigationCompleted(object sender, Microsoft.Web.WebView2.Core.CoreWebView2NavigationCompletedEventArgs e) | |
{ | |
//載入網頁後,在動態載入 JQuery | |
//因為 micosoft 的 domain 有做 cros 限制 | |
//所以只能用 https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.7.0.min.js | |
string jqueryScript = "var script = document.createElement('script');script.src = 'https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.7.0.min.js'; document.getElementsByTagName('head')[0].appendChild(script);"; | |
await webView21.ExecuteScriptAsync(jqueryScript); | |
MessageBox.Show("Import JQuery Already"); | |
} | |
小備註:
因為 我sample 網站是用 Edge WebView2 的網址他們會有所限制如果你不是引入指定網域的資源檔會出現,我一開始是用 JQuery 官方的 JS 連結
VM258:1 Refused to load the script 'https://code.jquery.com/jquery-3.6.3.min.js' because it violates the following Content Security Policy directive: "script-src 'self' 'self' 'unsafe-eval' 'unsafe-inline' https://ajax.aspnetcdn.com https://az725175.vo.msecnd.net https://*.microsoft.com https://mem.gfx.ms https://edgestatic.azureedge.net https://js.monitor.azure.com https://mwf-service.akamaized.net https://*.clarity.ms https://*.bing.com http://*.bing.com https://*.adnxs.com https://connect.facebook.net https://snap.licdn.com https://www.youtube.com". Note that 'script-src-elem' was not explicitly set, so 'script-src' is used as a fallback.
因為可以開啟 開發者模式,所以可以看到 錯的 console 來 debug ( 舒服~~~
後來找一下 https://learn.microsoft.com/en-us/aspnet/ajax/cdn/overview
這裡有紀載一些微軟允許的網域資源檔案,這故事告訴我們,雖然透過 WebView2 可以做一些騷操作,但是主要還是基於自動化
如果是一些違法不符合瀏覽器的規範的他還是不會去執行,這點需要注意
3. 呼叫 JQuery 部分:
private async void btnInjectJS_Click(object sender, EventArgs e) | |
{ | |
// 呼叫 JQuery 改變網頁資料 | |
var script = "$('a').html('我都被當麻改過了');"; | |
await webView21.ExecuteScriptAsync(script); | |
} | |
大概紀錄到這裡,如果有啥特殊的操作我覺得值得紀錄的我再來寫一下
標籤: C# , Javascript , Winform
--
Yesterday I wrote down the code. I bet I could be your hero. I am a mighty little programmer.
如果這篇文章有幫助到您,簡單留個言,或是幫我按個讚,讓我有寫下去的動力...