[英]ol3 with IE11 in a c# webbrowser control mouse click events not working
我已經使用webbrowser控件將ac#應用程序內的瀏覽器“升級”到IE 11。
當我將網頁加載到IE 11瀏覽器中時,所有內容都會在地圖上正常運行。
當我進入C#應用程序時,所有內容都會正常加載,但不能單擊地圖並將其拖動。
我所有的地圖點擊事件也不會觸發。
我可以使用箭頭鍵移動地圖,並且滾輪鼠標也可以使用。
我已經注意到,當我本機使用IE 11並將開發人員工具與“打破所有異常”結合使用時,在ol3中檢查其是否支持PointerEvent.HAS_BUTTONS時,我在ol3中收到一個錯誤,說對象不支持此操作。
錯誤是使用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問題。
因此,我決定回滾到IE10。 一切都可以在本機瀏覽器和WebBrowser控件中運行。
IE11破壞了太多內容,因此目前不值得進行“升級”。
我將在將來沒有足夠的時間投入即將發布的版本時檢查CefSharp。
我和你幾個月前的處境相同。 不起作用的鼠標事件只是第一個症狀。 我強烈建議您使用Chromium,因為最后,您沒有使用IE11(Webbrowser控件基於IE9內核),並且可以“有點”影響它的工作原理,但是:這是一個復雜的問題,您無法真正更新瀏覽器,進行調試等。Chromium的工作原理非常好,您可以將其完全嵌入解決方案中,單獨對其進行調試或測試,並且它基於現代的chrome。 要將其集成到.net解決方案中,可以使用:
https://github.com/cefsharp/CefSharp
問候
該問題與舊版輸入模型有關,默認情況下,該舊版輸入模型已為應用程序托管的WebBrowser控件啟用。
要使您的OpenLayers3應用程序正常工作,您必須在注冊表中將其禁用。 為此,您必須將應用程序的FEATURE_NINPUT_LEGACYMODE
設置為0
。 如果FeatureControl
分支中不存在此密鑰,則必須手動創建。
有關舊式輸入模型的更多信息,請閱讀this 。
在winforms中,ol3 / WebBrowser出現了很多問題,例如許多功能無法正常運行。 在HTML標頭中添加此代碼后,它非常完美:
<head>
<meta http-equiv="X-UA-Compatible" content="IE=10,chrome=1" />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.