我已经使用webbrowser控件将c#应用程序内的浏览器“升级”到IE 11。
当我将网页加载到IE 11浏览器中时,所有内容都会在地图上正常运行。
当我进入C#应用程序时,所有内容都会正常加载,但无法单击地图并将其拖动。
我所有的地图点击事件也不会触发。
我可以使用箭头键移动地图,并且滚轮鼠标也可以使用。
我已经注意到,当我本机使用IE 11并将开发人员工具与“打破所有异常”结合使用时,如果ol3检查是否支持PointerEvent.HAS_BUTTONS,则在ol3中会出现一个错误,表示Object不支持此操作。
错误是使用ol-3.4.0的ol-debug.js的44619行
注意:是的,我已经为我的应用程序名称的32位和64位密钥以及为该应用程序的vhost.exe版本设置了正确的browser_emulation注册表值。
更新:
我还应该注意,如果我使用
map.on('click', function(e) {
//do stuff
});
没有开火...但是,如果我使用jquery并执行
$(map.getViewport().on('click', function(e) {
//do stuff
});
...然后我的点击事件起作用...
最佳答案
我知道这是一个较晚的帖子,但希望它对其他人有所帮助可能会有所帮助。
我的想法完全相同:使用兼容性设置为IE11的WebBrowser控件会导致OpenLayers 3在显示2D地图时忽略鼠标单击。我尝试了CefSharp 3,并确信它可以解决问题,但是还有其他原因无法为我使用。经过大量的反复试验,我偶然发现了一个可行的解决方案:
<meta http-equiv="X-UA-Compatible" content="IE=11" />
<script>
if (navigator.appVersion.indexOf("MSIE 7.") !== -1)
{
delete window.PointerEvent;
window.navigator.msPointerEnabled = false;
}
</script>
这需要在包含ol.js之前的页面上。
这是对页面是否确实在WebBrowser控件中运行的粗略测试,但由于不再支持IE7,因此已经足够。 “ MSIE 7”的唯一真实实例。用户代理字符串中的,将来自默认的WebBrowser控件。
到目前为止,我还没有发现任何其他OpenLayers问题。