我在 WPF 应用程序中使用 WebBrowser 控件,使用 ol3(openlayers3)>强化Open Street 地图(osm) STRONG>。它在IE11浏览器中工作正常,但鼠标事件在嵌入式 IE11 WebBrowser控件中不起作用。如果我将我的WebBrowser设置为模拟IE10,则会触发鼠标事件,但3d视图(Cesium)不起作用。
我使用http://openlayers.org/ol3-cesium/examples/main.html作为示例。我在python服务器上本地托管它并在WebBrowser控件中呈现它。要运行WebGL和Cesium,我已将 FEATURE_BROWSER_EMULATION 键修改为11000,将 FEATURE_GPU_RENDERING 键修改为 .exe
中的一个我想使用IE11,因为我需要使用ol3-Cesium渲染地图的3d地球视图。所有鼠标单击事件在3d globe视图中都能正常工作,但是当我禁用3d视图并启用2D视图时,鼠标事件不会触发。我不确定我是否错过了注册表中的一些更改。
我也跟着ol3 with IE11 in a c# webbrowser control mouse click events not working,但我对答案不满意。它建议使用Chromium,因为很少有事件不能与IE11一起使用。但是如果3d globe视图允许事件触发,那么为什么不在ol3中使用2d。请帮忙。
答案 0 :(得分:1)
在注册表中,启用FEATURE_GPU_RENDERING
,然后将FEATURE_BROWSER_EMULATION
设置为0来关闭兼容模式。
这段代码对我有用。我发现的大多数答案建议将FEATURE_BROWSER_EMULATION
设置为您计算机上的最新IE版本,但从未使用过Cesium。将其设置为0,即关闭兼容模式确实有效。
internal static void SetBrowserFeaturesToSupportGpu()
{
// FeatureControl settings are per-process
var fileName = System.IO.Path.GetFileName( Process.GetCurrentProcess( ).MainModule.FileName );
SetBrowserFeatureControlKey(
"FEATURE_96DPI_PIXEL",
fileName,
1)
; // enable hi-dpi support
SetBrowserFeatureControlKey(
"FEATURE_BROWSER_EMULATION",
fileName,
00000)
; // turn off compatibility mode.
SetBrowserFeatureControlKey(
"FEATURE_AJAX_CONNECTIONEVENTS",
fileName,
1)
;
SetBrowserFeatureControlKey(
"FEATURE_ENABLE_CLIPCHILDREN_OPTIMIZATION",
fileName,
1)
;
SetBrowserFeatureControlKey(
"FEATURE_GPU_RENDERING",
fileName,
1)
; // use GPU rendering
SetBrowserFeatureControlKey(
"FEATURE_IVIEWOBJECTDRAW_DMLT9_WITH_GDI ",
fileName,
0)
; // force directX
SetBrowserFeatureControlKey(
"FEATURE_NINPUT_LEGACYMODE",
fileName,
0)
;
SetBrowserFeatureControlKey(
"FEATURE_DISABLE_NAVIGATION_SOUNDS",
fileName,
1)
;
SetBrowserFeatureControlKey(
"FEATURE_SCRIPTURL_MITIGATION",
fileName,
1)
;
SetBrowserFeatureControlKey(
"FEATURE_SPELLCHECKING",
fileName,
0)
;
SetBrowserFeatureControlKey(
"FEATURE_STATUS_BAR_THROTTLING",
fileName,
1)
;
SetBrowserFeatureControlKey(
"FEATURE_VALIDATE_NAVIGATE_URL",
fileName,
1)
;
SetBrowserFeatureControlKey(
"FEATURE_WEBOC_DOCUMENT_ZOOM",
fileName,
1)
; // allow zoom.
SetBrowserFeatureControlKey(
"FEATURE_WEBOC_POPUPMANAGEMENT",
fileName,
0)
; // disallow auto-popups
SetBrowserFeatureControlKey(
"FEATURE_ADDON_MANAGEMENT",
fileName,
0)
; // disallow auto-addons/plugins
SetBrowserFeatureControlKey(
"FEATURE_WEBSOCKET",
fileName,
1)
;
SetBrowserFeatureControlKey(
"FEATURE_WINDOW_RESTRICTIONS",
fileName,
0)
; // disallow popups
}
internal static void SetBrowserFeatureControlKey( string feature, string appName, uint value )
{
using ( var key = Registry.CurrentUser.CreateSubKey(
String.Concat( @"Software\Microsoft\Internet Explorer\Main\FeatureControl\", feature ),
RegistryKeyPermissionCheck.ReadWriteSubTree ) )
{
key.SetValue( appName, ( UInt32 ) value, RegistryValueKind.DWord );
}
}