Почему события Here Maps JS перестают срабатывать при загрузке в элемент управления. NET WebBrowser? - PullRequest
0 голосов
/ 17 июня 2020

У меня есть интерактивная карта Here Maps, работающая в режиме Legacy, с добавленным прослушивателем событий tap, например:

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <script type="text/javascript" src="https://js.api.here.com/v3/3.1/mapsjs-core.js"></script>
    <script type="text/javascript" src="https://js.api.here.com/v3/3.1/mapsjs-core-legacy.js"></script>
    <script type="text/javascript" src="https://js.api.here.com/v3/3.1/mapsjs-service.js"></script>
    <script type="text/javascript" src="https://js.api.here.com/v3/3.1/mapsjs-service-legacy.js"></script>
    <script type="text/javascript" src="https://js.api.here.com/v3/3.1/mapsjs-ui.js"></script>
    <script type="text/javascript" src="https://js.api.here.com/v3/3.1/mapsjs-mapevents.js"></script>
    <script type="text/javascript" src="https://js.api.here.com/v3/3.1/mapsjs-data.js"></script>
    <link rel="stylesheet" type="text/css" href="https://js.api.here.com/v3/3.1/mapsjs-ui.css" />
</head>
<body>
    <div>
        <div style="width: 640px; height: 480px" id="mapContainer"></div>
    </div>

    <script type="text/javascript">
        // Initialize the platform object
        var platform = new H.service.Platform({
            // We use a real API key but it's not included here for obvious reasons
            'apikey': 'notARealAPIKeyPleaseSubstituteForARealOne'
        });

        // Obtain the default map types from the platform object
        var maptypes = platform.createDefaultLayers();

        // Instantiate (and display) a map object
        // Using raster maptype and P2D for compatibility with IE11
        var map = new H.Map(
            document.getElementById('mapContainer'),
            maptypes.raster.normal.map,
            {
                zoom: 12,
                center: { lat: -33.81, lng: 150.78 },
                pixelRatio: window.devicePixelRatio || 1,
                engineType: H.map.render.RenderEngine.EngineType.P2D
            });

        // Add a default UI to the map
        var ui = H.ui.UI.createDefault(map, maptypes);
        // Make the map draggable
        var behavior = new H.mapevents.Behavior(new H.mapevents.MapEvents(map));

        // Add a listener for the 'tap' event on the map
        map.addEventListener("tap",
            function (evt) {
                console.log("Map tapped!", evt)
            });
    </script>
</body>
</html>

Это отлично работает в таких браузерах, как Chrome и IE11 , при этом карту можно перетаскивать, а сведения о событии tap записываются в консоль. Однако, как только эта страница добавляется в качестве URL-адреса для элемента управления. NET WebBrowser в проекте WinForms, события перетаскивания и касания карты внезапно перестают работать, без регистрации ошибок в консоли. Это почти как если бы что-то там не давало сработать событиям карты по какой-то причине.

Я уже пробовал взломать реестр, подробно описанный в этом посте , чтобы заставить WebBrowser в приложении WinForms использовать IE11 без режима совместимости IE7 (и проверено, что это было правильно применено с помощью средства проверки пользовательского агента), безрезультатно. Я также пробовал запустить страницу, поскольку она загружена в приложение WinForms в отладчике Visual Studio, и она определенно без проблем попадает в строку addEventListener. Последнее, что я пробовал, - это добавить кнопку на страницу с событием click, и это тоже отлично работает.

Мне кажется, что у меня заканчиваются варианты. Есть ли что-то, что я упускаю из виду, или есть какое-то странное поведение в элементах управления WebBrowser, которое не позволяет этим событиям запускаться? Если да, то есть ли способ обойти это?

1 Ответ

0 голосов
/ 24 июня 2020

Поддержка прежних версий1: Inte rnet Explorer 9, 10, 11 iOS Рабочий стол WebView iOS 11 +

Чтобы узнать больше о поддержке браузером API JS, обратитесь к: https://developer.here.com/documentation/maps/3.1.17.0/dev_guide/topics/why-use.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...