ol3 与 IE11 在 c# webbrowser 控制鼠标单击事件不工作
ol3 with IE11 in a c# webbrowser control mouse click events not working
我已经 "upgraded" 在使用 webbrowser 控件的 c# 应用程序中将浏览器升级到 IE 11。
当我将我的网页加载到 IE 11 浏览器中时,地图上的一切正常。
当我在 C# 应用程序中时,除了我无法单击并拖动地图之外,所有内容都可以正常加载。
我的所有地图点击事件也不会触发。
我可以用方向键移动地图,滚轮鼠标也可以。
我注意到,当我在本机使用 IE 11 并将开发人员工具与 "Break on all exceptions" 一起使用时,我在 ol3 检查是否支持 PointerEvent.HAS_BUTTONS 时收到错误消息,说对象不支持'不支持这个动作。
错误在 ol-debug.js 的第 44619 行,使用 ol-3.4.0
注意:是的,我已经为我的应用程序名称的 32 位和 64 位密钥以及 vhost.exe 版本的 browser_emulation 设置了正确的注册表值应用程序。
更新:
我还应该注意,如果我使用
map.on('click', function(e) {
//do stuff
});
没有任何东西被解雇...但是,如果我使用 jquery 并执行
$(map.getViewport().on('click', function(e) {
//do stuff
});
...然后我的点击事件起作用....
几个月前我和你的情况一样。非工作鼠标事件只是第一个症状。我强烈建议你为此使用 Chromium,因为最后你没有使用 IE11(Webbrowser 控件基于 IE9 内核),你可以影响 "a bit" 它的工作方式,但是:如果你有一个复杂的问题,您无法真正更新您的浏览器,进行调试等。
Chromium 工作得非常好,您可以将它完全嵌入到您的解决方案中,单独为它加星以进行调试或测试,它基于现代 chrome。
要将其集成到 .net 解决方案中,您可以使用:
https://github.com/cefsharp/CefSharp
此致
所以,我决定回滚到 IE10。在本机浏览器和 WebBrowser 控件中一切正常。
IE11 破坏了太多东西,现在不值得 "upgrade"。
我以后会检查 CefSharp,只是没有足够的时间投入即将发布的版本。
我知道这有点晚了 post,但希望它能对偶然发现它的其他人有所帮助。
我的处境完全相同:使用兼容性设置为 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 问题。
该问题与遗留输入模型有关,该模型默认为应用程序托管的 WebBrowser 控件启用。
要让您的 OpenLayers3 应用程序正常工作,您必须在注册表中禁用它。为此,您必须将应用程序的 FEATURE_NINPUT_LEGACYMODE
设置为 0
。如果您的 FeatureControl
分支中不存在此密钥,您必须手动创建它。
有关旧输入模型的更多信息,请阅读 this。
我在 winforms 中遇到了很多关于 ol3 / WebBrowser 的问题,比如很多功能不能正常工作;
我在 HTML header 中添加了这个之后,就完美了:
<head>
<meta http-equiv="X-UA-Compatible" content="IE=10,chrome=1" />
我已经 "upgraded" 在使用 webbrowser 控件的 c# 应用程序中将浏览器升级到 IE 11。
当我将我的网页加载到 IE 11 浏览器中时,地图上的一切正常。
当我在 C# 应用程序中时,除了我无法单击并拖动地图之外,所有内容都可以正常加载。
我的所有地图点击事件也不会触发。
我可以用方向键移动地图,滚轮鼠标也可以。
我注意到,当我在本机使用 IE 11 并将开发人员工具与 "Break on all exceptions" 一起使用时,我在 ol3 检查是否支持 PointerEvent.HAS_BUTTONS 时收到错误消息,说对象不支持'不支持这个动作。
错误在 ol-debug.js 的第 44619 行,使用 ol-3.4.0
注意:是的,我已经为我的应用程序名称的 32 位和 64 位密钥以及 vhost.exe 版本的 browser_emulation 设置了正确的注册表值应用程序。
更新:
我还应该注意,如果我使用
map.on('click', function(e) {
//do stuff
});
没有任何东西被解雇...但是,如果我使用 jquery 并执行
$(map.getViewport().on('click', function(e) {
//do stuff
});
...然后我的点击事件起作用....
几个月前我和你的情况一样。非工作鼠标事件只是第一个症状。我强烈建议你为此使用 Chromium,因为最后你没有使用 IE11(Webbrowser 控件基于 IE9 内核),你可以影响 "a bit" 它的工作方式,但是:如果你有一个复杂的问题,您无法真正更新您的浏览器,进行调试等。 Chromium 工作得非常好,您可以将它完全嵌入到您的解决方案中,单独为它加星以进行调试或测试,它基于现代 chrome。 要将其集成到 .net 解决方案中,您可以使用:
https://github.com/cefsharp/CefSharp
此致
所以,我决定回滚到 IE10。在本机浏览器和 WebBrowser 控件中一切正常。
IE11 破坏了太多东西,现在不值得 "upgrade"。
我以后会检查 CefSharp,只是没有足够的时间投入即将发布的版本。
我知道这有点晚了 post,但希望它能对偶然发现它的其他人有所帮助。
我的处境完全相同:使用兼容性设置为 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 问题。
该问题与遗留输入模型有关,该模型默认为应用程序托管的 WebBrowser 控件启用。
要让您的 OpenLayers3 应用程序正常工作,您必须在注册表中禁用它。为此,您必须将应用程序的 FEATURE_NINPUT_LEGACYMODE
设置为 0
。如果您的 FeatureControl
分支中不存在此密钥,您必须手动创建它。
有关旧输入模型的更多信息,请阅读 this。
我在 winforms 中遇到了很多关于 ol3 / WebBrowser 的问题,比如很多功能不能正常工作; 我在 HTML header 中添加了这个之后,就完美了:
<head>
<meta http-equiv="X-UA-Compatible" content="IE=10,chrome=1" />