Сбросить стрелки на поведение по умолчанию - PullRequest
3 голосов
/ 19 марта 2012

Я заметил, что мои клавиши со стрелками были захвачены картой Bing и больше не прокручивают страницу.

В любом случае, чтобы сбросить клавиши со стрелками для поведения по умолчанию в JavaScript?

Ответы [ 4 ]

3 голосов
/ 23 июля 2012

В конце концов я обнаружил событие keydown для bing, которое можно использовать.Итак, что происходит, пользователь все равно может увеличивать и уменьшать / перетаскивать щелчком мыши для панорамирования, когда его курсор находится внутри карты Bing (которая не занимает всю страницу).Однако, когда они нажимают клавиши со стрелками для сайта в целом, это не должно влиять на карту bing.

После инициализации нового Microsoft.Maps я обнаружил, что могу добавить обработчик для отмены события keydown длякарта:

Microsoft.Maps.Events.addHandler(map, 'keydown', cancelEvent)
0 голосов
/ 05 августа 2015

Чтобы остановить это поведение, не нарушая другой JavaScript (т.е. удаляя привязки клавиш, но сохраняя другие функциональные возможности страницы), вам нужно прервать определенные вызовы JavaScript, которые влияют на привязки клавиш (и только на них).

Самый простой способ сделать это с помощью GreaseMonkey и готового скрипта, подобного этому: Отключить перехваты клавиатуры сайта

0 голосов
/ 25 октября 2013

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

  // Initialize the map
  map = new Microsoft.Maps.Map(document.getElementById("myMap"), {
   credentials:"Bing Maps Key",
   disableKeyboardInput: true
  }); 

От: http://social.msdn.microsoft.com/Forums/en-US/2807cbc3-0f88-4415-b2a9-09e950d210f7/issue-with-bing-maps-while-pressing-the-down-or-up-arrow

0 голосов
/ 18 апреля 2012

Используйте document.activeElement .blur () для Firefox, window.focus () для IE и document.activeElement = document для Webkit, чтобы вернуть фокус:

<!doctype html>
<html lang="en">
<head>
    <title>Blur Object Test</title>
</head>
<body>
<object id="bingmap" data="http://www.bing.com/maps"></object>
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
<script type="text/javascript">
  document.activeElement.blur(); window.focus(); document.activeElement = document;
</script>
</body>
</html>

Если Webkit несовместим, вместо этого используйте событие наведения мыши:

function takeback()
    {
    while(RegExp("object","i").test(document.activeElement.nodeName) )
      {
      window.focus();
      document.activeElement.blur();
      }
    return false;
    }

  if (!!document.addEventListener)
    {
    document.addEventListener("mouseover", takeback, false);
    }
  else
    {
    window.focus();
    }
...