更改浏览器url时是否存在Javascript键控限制?

更改浏览器url时是否存在Javascript键控限制?,javascript,jquery,keydown,Javascript,Jquery,Keydown,我试图用javascript添加一个按键事件来刷新页面。但它没有起作用。同样的代码在按钮点击事件上也能完美地工作。如何使用keydown事件实现重新加载页面?该页面需要使用GET加载,即使该页面第一次使用POST加载,因此window.location.reload()不起作用 这个问题发生在FF 4上。我还没有尝试过其他浏览器 不起作用的代码是: $(document).keydown(function(e) { if (e.keyCode == 27) { window.

我试图用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;
});
尝试使用“e.which”而不是“e.keyCode”。浏览器在这个问题上各不相同,但jQuery确保可以可靠地使用“which”来获取关键代码

编辑-Firefox 4看起来确实很有趣,但您可以通过在新事件中重新加载页面来解决此问题:

$(document).keydown(function(e) {
  if (e.keyCode == 27) {
        setTimeout(function() {
            window.location.href = document.URL;
        }, 1);
  }
});
尝试使用“e.which”而不是“e.keyCode”。浏览器在这个问题上各不相同,但jQuery确保可以可靠地使用“which”来获取关键代码

编辑-Firefox 4看起来确实很有趣,但您可以通过在新事件中重新加载页面来解决此问题:

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

你的代码没有任何问题。在这把小提琴上试一试:

或者,您可以尝试
哪个
。下面的代码应该告诉你哪一个适合你

$(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;
  }
});
编辑:您需要在JSFIDLE页面中点击“回车”来测试此代码。确保在“结果”窗格中按enter键


此外,正如@Pointy所指出的(并非双关语),
这是一种保证做到这一点的方法。上面的代码只是帮助您找到问题所在

您的代码没有任何问题。在这把小提琴上试一试:

或者,您可以尝试
哪个
。下面的代码应该告诉你哪一个适合你

$(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;
  }
});
编辑:您需要在JSFIDLE页面中点击“回车”来测试此代码。确保在“结果”窗格中按enter键

此外,正如@Pointy所指出的(并非双关语),
这是一种保证做到这一点的方法。上面的代码只是帮助您找到问题所在

可能会帮助您:

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

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

简单地说,使用e,而不是:

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

简单地说,使用e,而不是:

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


我刚刚用chrome试用过,它很管用。你用的是什么浏览器?我用的是FF4。在我的问题中添加了浏览器,本来应该这样做的:)我刚刚用chrome试用过,它可以工作了。你用的是什么浏览器?我用的是FF4。将浏览器添加到我的问题中,首先应该这样做:)jQuery确保“which”始终是关键代码;根本不需要尝试“keyCode”属性。@Pointy我同意,我自己从未使用过keyCode。这段代码只是帮助我们调试他的问题,让我们知道这是一个浏览器问题,还是他的JS事先失败了。是的,很公平。我想,这也会确切地说明为什么它对OP不起作用。我正确地抓住了关键。问题是浏览器没有刷新页面。但thanx,这可能对其他浏览器很有用。@MadSysop啊,好的,我明白你的意思了。将刷新更改为
window.location.href=window.location.href对我来说很好。jQuery确保“which”始终是关键代码;根本不需要尝试“keyCode”属性。@Pointy我同意,我自己从未使用过keyCode。这段代码只是帮助我们调试他的问题,让我们知道这是一个浏览器问题,还是他的JS事先失败了。是的,很公平。我想,这也会确切地说明为什么它对OP不起作用。我正确地抓住了关键。问题是浏览器没有刷新页面。但thanx,这可能对其他浏览器很有用。@MadSysop啊,好的,我明白你的意思了。将刷新更改为
window.location.href=window.location.href对我来说很好。我正确地抓住了钥匙。问题是浏览器没有刷新页面。但是thanx,这可能对其他浏览器很有用。@MadSysop好的,我想我找到了一个解决方法-我会更新我的答案。顺便说一句,你可以使用0作为setTimeout参数。不需要1毫秒的停顿:我知道,但这是一个老习惯:-)很高兴它奏效了!这是一个我通常存钱的把戏。问题是浏览器没有刷新页面。但是thanx,这可能对其他浏览器很有用。@MadSysop好的,我想我找到了一个解决方法-我会更新我的答案。顺便说一句,你可以使用0作为setTimeout参数。不需要1毫秒的停顿:我知道,但这是一个老习惯:-)很高兴它奏效了!这是一个我通常存钱的把戏。问题是浏览器没有刷新页面。但是thanx,这可能对其他浏览器很有用。只是注意到您添加了FF4作为问题。今天早上我会查一下我的密码。我没弄错钥匙。问题是浏览器没有刷新页面。但是thanx,这可能对其他浏览器很有用。只是注意到您添加了FF4作为问题。我会在今天早上查我的密码。