我試過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,現在我可以取消默認操作。 –