我试过event.preventDefault
和event.stopPropagation
,并从事件处理程序返回false。防止浏览器中按键的默认动作
没有什么可以帮助阻止浏览器中某些键的行为。
比如我想使用Page Down键和的Page Up记录(下一首,上)在AngularJS应用程序,获取一个或下一个记录之间进行导航。它工作正常。但它并不妨碍浏览器在Page 012下载或Page Up上执行默认操作。例如,按住select(下拉)元素的同时将改变下拉列表的选择,然后移动到下一个记录。对于很多其他有用的键无法覆盖的情况,实际上也是如此:主页,结束(如果关注它,将使选择下拉更改为第一个或最后一个选择)。
这里是我当前的代码:
$document.bind('keyup', function(e) {
switch (e.keyCode) {
case 109:
if (e.altKey) {
$scope.gotoPrev(e);
e.preventDefault();
e.stopPropagation();
window.scrollTo(0, 0);
return false;
}
break;
case 107: ....
正如你看到我目前使用其他键(Alt键+,Alt键-等),而不是Page Down键和Page Up。但我想用这些。
另一个相关的问题是,如何防止tab键跳转到url区域。我希望它只循环页面上的字段,而不是跳出他的页面并进入URL区域。
e.stopImmediatePropagation? – steven
不,这是因为默认操作在按键之前触发,在按键之前。正如在下面的答案中提出的,我将dit更改为keydown,现在我可以取消默认操作。 –