看官方文档比中文百度效果好太多,使用cefsharp强烈建议看官方文档,FAQ中可能就有你的问题。
最近做的一个WPF项目,嵌入cefsharp控件加载html,实现百度地图显示和交互,在地图上利用百度地图api添加了Marker,我需要点击marker执行C#的事件,marker的监听事件是JS事件,cefsharp执行事件使用函数ExecuteJavaScriptAsync,获取事件返回值使用函数EvaluateScriptAsync,可当点击marker发生的JS事件是通过事件监听实现的,而JS中addEventListener是没有返回值的,故cefsharp采用了message进行交互,html中代码如下
var point = new BMapGL.Point(longtitude, latitude);
var myIcon = new BMapGL.Icon(url, new BMapGL.Size(10, 15));
var marker = new BMapGL.Marker(point, {
icon: myIcon
});
marker.setTitle(id);
// 将标注添加到地图
var infoWindow = new BMapGL.InfoWindow(id, point);
map.addOverlay(marker);
marker.addEventListener('click', clickListener);
function clickListener(e) {
if (e.target instanceof BMapGL.Marker) {
CefSharp.PostMessage(e.target.getTitle());
}
}
我们只需要在每次事件发生时向cefsharp发送message就能是实现C#后台对事件的监听
C#部分代码,browser是cefsharp浏览器对象,已经进行过初始化,这两个事件会对浏览器加载和获取message进行监听
browser.JavascriptMessageReceived += OnBrowserJavascriptMessageReceived;
browser.FrameLoadEnd += OnFrameLoadEnd;
public void

本文介绍如何在WPF项目中使用CEFSharp控件加载百度地图,并通过CEFSharp实现C#与JavaScript之间的事件交互。具体包括如何设置地图Marker监听事件、通过JS向C#发送消息、以及C#如何监听和处理这些消息。
最低0.47元/天 解锁文章
2557





