1.C#与JS 互相调用
1.1.C#端
chromeBrowser = new ChromiumWebBrowser(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"html\html\xxx.html"));
chromeBrowser.Dock = DockStyle.Fill;
CefSharpSettings.LegacyJavascriptBindingEnabled = true;
// BindingOptions bo = new BindingOptions(); //驼峰命名法
// bo.CamelCaseJavascriptNames =false;
// chromeBrowser.RegisterJsObject("newFuncInfo", new NewFuncInfo(chromeBrowser), bo);
chromeBrowser.RegisterJsObject("newFuncInfo", new NewFuncInfo(chromeBrowser));
// 开启调试
chromeBrowser.IsBrowserInitializedChanged += delegate (object s, IsBrowserInitializedChangedEventArgs ev)
{
((ChromiumWebBrowser)s).ShowDevTools();
};
internal class NewFuncInfo
{
private ChromiumWebBrowser chromeBrowser;
public NewFuncInfo(ChromiumWebBrowser chromeBrowser)
{
this.chromeBrowser = chromeBrowser;
}
public void isCreate(string pakId)
{
DialogResult result = MessageBox.Show("XXX?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
if (result == DialogResult.OK)
{
// 调用JS函数
chromeBrowser.EvaluateScriptAsync("ve.newFuncInfo2(" + pakId + ");");
}
else
{
return;
}
}
}
1.2.JS端
newFuncInfo(pakId) {
if (this.sign) {
newFuncInfo.isCreate(pakId); // 调用C#端的方法
} else {
this.newFuncInfo2(pakId);
}
},
newFuncInfo2(pakId) {
if (this.sign) {
newFuncInfo.isCreate(pakId); // 调用C#端的方法
} else {
this.newFuncInfo2(pakId);
}
},