Существует ли ограничение на использование клавиш Javascript при изменении URL браузера? - PullRequest
0 голосов
/ 15 июня 2011

Я попытался добавить событие keydown с помощью javascript, который обновляет страницу.Но это не сработало.Тот же код отлично работает при нажатии кнопки.Как добиться перезагрузки страницы с событием keydown?Страница должна быть загружена с помощью GET, даже если страница сначала была загружена с помощью POST, поэтому window.location.reload () не работает.

Эта проблема возникает с FF 4. У меня нетпробовал другие браузеры.

НЕ работает код:

$(document).keydown(function(e) {
  if (e.keyCode == 27) {
        window.location.href = document.URL;
  }
});

Этот код отлично работает:

$('.my-button-class').click(function(){
    window.location.href = document.URL;
});

Ответы [ 4 ]

2 голосов
/ 15 июня 2011

Попробуйте использовать «e.which» вместо «e.keyCode».Браузеры варьируются в зависимости от этой проблемы, но jQuery гарантирует, что «какой» может быть надежно использован для получения кода ключа.

edit - Firefox 4 действительно выглядит забавно, но вы можете работатьвокруг поведения, перезагрузив страницу в новом событии:

$(document).keydown(function(e) {
  if (e.keyCode == 27) {
        setTimeout(function() {
            window.location.href = document.URL;
        }, 1);
  }
});
1 голос
/ 15 июня 2011

Простой, используйте e.which вместо:

$(document).keydown(function(e) {
  if (e.which == 27) {
      window.location.href = document.URL;
  }
});
1 голос
/ 15 июня 2011

В вашем коде нет ничего плохого. Проверьте это на этой скрипке: http://jsfiddle.net/yWAqD/

В качестве альтернативы, вы можете попробовать which. Приведенный ниже код должен сказать вам, какой из них работает для вас.

$(document).keydown(function(e) {
  if (e.keyCode == 13) {
      alert('keyCode')
      window.location.href = document.URL;
      return true;
  }

  if (e.which == 13) {
      alert('which');
      window.location.href = document.URL;
  }
});

РЕДАКТИРОВАТЬ : вам нужно нажать «ENTER» на странице jsfiddle, чтобы проверить этот код. Убедитесь, что вы нажали Enter, когда находитесь на панели «Результат».

Кроме того, как указывает @Pointy (не каламбур), which - гарантированный способ сделать это. Приведенный выше код просто поможет вам найти, где ваша проблема.

0 голосов
/ 15 июня 2011

Может помочь вам:

document.onkeydown = onKeyDown;
function onKeyDown(){
   if(event.keyCode == 13) location = "http://url.com"
}
...