初始化CefSharp时加上两个事件(装入完成事件、消息接收事件)
private void initBrowser()
{
var settings = new CefSettings();
settings.Locale = "zh-CN";
settings.CefCommandLineArgs.Add("disable-gpu", "1");
Cef.Initialize(settings);
string url = "https://www.taobao.com/";
browser = new ChromiumWebBrowser(url);
panel1.Controls.Add(browser);
Cef.EnableHighDPISupport();
browser.LifeSpanHandler = new LifeSpanHandler();
browser.AddressChanged += Browser_AddressChanged;
myLoadHandler = new MyLoadHandler(this);
browser.LoadHandler = myLoadHandler;
browser.FrameLoadEnd += Browser_FrameLoadEnd;
browser.JavascriptMessageReceived += Browser_JavascriptMessageReceived;
}
装入完成事件
private void Browser_FrameLoadEnd(object sender, FrameLoadEndEventArgs e)
{
if (e.Frame.IsMain)
{
browser.ExecuteScriptAsync(@"
//鼠标按下事件
document.addEventListener('mousedown', function(e) {
var ret={type:'mousedown',x:e.pageX,y:e.pageY};
CefSharp.PostMessage(ret);
}, false);
//鼠标释放事件
document.addEventListener('mouseup', function(e) {
var ret={type:'mouseup',x:e.pageX,y:e.pageY};
CefSharp.PostMessage(ret);
}, false);
//keydown事件
document.addEventListener('keydown', function(e) {
var ret={type:'keydown',keyCode:event.keyCode};
CefSharp.PostMessage(ret);
}, false);
//keyup事件
document.addEventListener('keyup', function(e) {
var ret={type:'keyup',keyCode:event.keyCode};
CefSharp.PostMessage(ret);
}, false);
");
}
}
消息接收事件
private void Browser_JavascriptMessageReceived(object sender, JavascriptMessageReceivedEventArgs e)
{
if (e.Message != null)
{
dynamic eo = e.Message;
switch (eo.type)
{
case "mousedown":
case "mouseup":
int x = eo.x;
int y = eo.y;
break;
case "keydown":
break;
case "keyup":
int keyCode = eo.keyCode;
if (keyCode == 123)
{
}
break;
}
}
}