我已升级"使用webbrowser控件在c#应用程序中浏览器的IE 11。
当我将网页本身加载到IE 11浏览器时,一切都在地图上正常运行。
当我在c#应用程序中时,除了我无法点击地图并拖动它之外,所有内容都会加载而不会出错。
我的所有地图点击事件也不会触发。
我可以使用箭头键移动地图,滚轮鼠标也可以工作。
我注意到当我本地使用IE 11,并使用开发人员工具"打破所有异常"时,我在ol3中检查是否支持PointerEvent.HAS_BUTTONS时出现错误,说对象不支持这一行动。
错误在ol-debug.js的第44619行,使用ol-3.4.0
注意:是的,我已为我的应用程序名称的32位和64位密钥设置了browser_emulation的正确注册表值,并为应用程序的vhost.exe版本设置了正确的注册表值。
更新:
我还应该注意,如果我使用
map.on('click', function(e) {
//do stuff
});
没有解雇...但是,如果我使用jquery并且
$(map.getViewport().on('click', function(e) {
//do stuff
});
...然后我的点击活动有效......
答案 0 :(得分:3)
我知道这是一个迟到的帖子,但希望如果他们偶然发现它可能对其他人有所帮助。
我在同一条船上:使用兼容性设置为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问题。
答案 1 :(得分:1)
所以,我决定回到IE10。一切都在本机浏览器和WebBrowser控件中都有效。
IE11打破了太多东西,并不值得升级&#34;在这个时间点。
我将来会检查CefSharp,还没有足够的时间进入即将发布的版本。
答案 2 :(得分:0)
https://github.com/cefsharp/CefSharp
此致
答案 3 :(得分:0)
问题与遗留输入模型有关,默认情况下,该模型是由应用程序托管的WebBrowser控件启用的。
要使您的OpenLayers3应用程序正常工作,您必须在注册表中禁用它。为此,您必须为您的应用程序将FEATURE_NINPUT_LEGACYMODE
设置为0
。如果您的FeatureControl
分支中不存在此密钥,则必须手动创建。
有关旧版输入模型的详细信息,请阅读this。
答案 4 :(得分:0)
在winforms中,ol3 / WebBrowser出现了很多问题,就像许多功能无法正常工作一样; 在HTML标头中添加完此代码后,它就完美了:
<head>
<meta http-equiv="X-UA-Compatible" content="IE=10,chrome=1" />