C# 使用Microsoft Edge WebView2的相關(guān)總結(jié)
一、C#和JS互相調(diào)用
1、js調(diào)用C#
C#代碼如下:
webView.CoreWebView2.AddHostObjectToScript("webBrowserObj", new ScriptCallbackObject());
await webView.CoreWebView2.AddScriptToExecuteOnDocumentCreatedAsync("var webBrowserObj= window.chrome.webview.hostObjects.webBrowserObj;");
像網(wǎng)頁(yè)里面注入變量,這樣網(wǎng)頁(yè)調(diào)用時(shí)候不用每次寫window.chrome.webview.hostObjects.webBrowserObj調(diào)用,最主要的是為了兼容之前cef里面Js的寫法。
[ClassInterface(ClassInterfaceType.AutoDual)]
[ComVisible(true)]
/// <summary>
/// 網(wǎng)頁(yè)調(diào)用C#方法
/// </summary>
public class ScriptCallbackObject
{
public string UserName { get; set; } = "我是C#屬性";
public void ShowMessage()
{
MessageBox.Show("網(wǎng)頁(yè)調(diào)用C#");
}
public void ShowMessageArg(string arg)
{
MessageBox.Show("【網(wǎng)頁(yè)調(diào)用C#】:" + arg);
}
public string GetData(string arg)
{
return "【網(wǎng)頁(yè)調(diào)用C#獲取數(shù)據(jù)】;" + arg;
}
[System.Runtime.CompilerServices.IndexerName("Items")]
public string this[int index]
{
get { return m_dictionary[index]; }
set { m_dictionary[index] = value; }
}
private Dictionary<int, string> m_dictionary = new Dictionary<int, string>();
}
JS調(diào)用如下;
function callCsharp2() {
var data2 = $("#txtArg").attr("value"); //大坑 值不會(huì)時(shí)刻變化 // alert(data2); var data = $("#txtArg").val();
window.chrome.webview.hostObjects.webBrowserObj.ShowMessageArg(data); //window.chrome.webview.postMessage(data); };
async function callCsharp3() {
var data = $("#txtArg").val();
var result = await webBrowserObj.GetData(data);
alert(result);
};
async function callCsharp4() {
const propValue = await webBrowserObj.UserName;
console.log(propValue);
alert(propValue);
};
2、C#調(diào)用JS
private void callJS_Click(object sender, RoutedEventArgs e)
{
webView.CoreWebView2.ExecuteScriptAsync("ShowMessage()");
}
private void callJSArg_Click(object sender, RoutedEventArgs e)
{
webView.CoreWebView2.ExecuteScriptAsync($"ShowMessageArg('{txtArg.Text}')");
}
private async void callJSGetData_Click(object sender, RoutedEventArgs e)
{
var jsResult = await webView.CoreWebView2.ExecuteScriptAsync($"GetData('{txtArg.Text}')");
if (!string.IsNullOrEmpty(jsResult))
{
MessageBox.Show(jsResult);
}
}
js里面的代碼
//2、C#調(diào)用網(wǎng)頁(yè)
var jsVar = '123';
function Hello() {
alert('調(diào)用Js' + jsVar);
};
function ShowMessage() {
alert('我是網(wǎng)頁(yè)');
};
function ShowMessageArg(arg) {
alert('【我是網(wǎng)頁(yè)消息框】' + arg);
};
function GetData(arg) {
return '【我是網(wǎng)頁(yè)返回給你】:' + arg;
};
二、縮放問(wèn)題
webView.CoreWebView2.Settings.IsZoomControlEnabled = false;
只能禁止鼠標(biāo)縮放,不能禁止手勢(shì)縮放。 見問(wèn)題
另外觸摸到底部門的時(shí)候 有彈跳,暫時(shí)也無(wú)法解決。
以上就是C# 使用Microsoft Edge WebView2的相關(guān)總結(jié)的詳細(xì)內(nèi)容,更多關(guān)于C# 使用Microsoft Edge WebView2的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
一文帶你吃透C#中面向?qū)ο蟮南嚓P(guān)知識(shí)
這篇文章主要為大家詳細(xì)介紹了C#中面向?qū)ο蟮南嚓P(guān)知識(shí),文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C#有一定的幫助,需要的小伙伴可以參考一下2023-02-02
基于集合的子集與集合的全排列的相關(guān)問(wèn)題
本篇文章介紹了,集合的子集與集合的全排列的相關(guān)系列問(wèn)題說(shuō)明,需要的朋友參考下2013-05-05
C#字符串內(nèi)存分配與駐留池學(xué)習(xí)分享
這篇文章主要介紹了C#字符串內(nèi)存分配與駐留池學(xué)習(xí)分享,大家參考使用吧2013-12-12
WinForm DataGridView控件隔行變色的小例子
WinForm的DataGridView控件設(shè)置行的顏色2013-03-03

