문제

매우 간단한 :

사용자가 화살표 키를 누를 때 브라우저가 스크롤되는 것을 방지 할 수 있습니까?

도움이 되었습니까?

해결책

매우 간단합니다 : 그렇습니다.하지만하지 마십시오.

브라우저가 사용자를 혼동하거나 분노하는 방식의 기본 작동을 변경하면 전체 경험이 사용자 친화적이지 않습니다. 사용자는 귀하가 아니라 브라우저 기능을 수행하는 방식을 궁극적으로 제어해야합니다. 이것은 메뉴 항목에 액세스하거나 컨텍스트 메뉴를 제거하는 것과 유사합니다.

다른 팁

네. 다음과 같은 것을 사용하십시오 : docum

function HandleKeyPress(e) {
    var e = e || window.event;
    switch (e.keyCode) {

        case e.DOM_VK_LEFT:
        case e.DOM_VK_RIGHT:
        case e.DOM_VK_UP:
        case e.DOM_VK_DOWN:
            if (e.preventDefault)
                e.preventDefault();
            else e.returnValue = false;
    }
}

그렇게하는 것은 좋은 생각이 아닐 수도 있습니다. 더 나은 접근 방식을 간과하지 않도록하십시오.

많은 사람들이 브라우저가하는 일을 깨뜨리지 말라고 말하는 것 같습니다.

비슷하거나 더 나은 기능으로 대체하지 않는 한 동일하게 주장합니다.

키보드 "다운"및 "UP"키를 사용하는 요소에 키보드 이벤트를 추가했기 때문에 오버플로가있는 요소에서 키보드 스크롤을 자주 죽입니다 (파인더 또는 Windows 탐색기 창을 생각).

기본 두루마리는 상호 작용을 모두 화려하게 만들었습니다. 상단 항목이 선택되면 '아래로'키가 키를 표시하면 다음 항목을 선택하고 요소를 아래로 스크롤하여 방금 선택한 내용을 숨 깁니다.

그래서 기본 스크롤을 깨뜨린 다음 현재 스크롤보기 아래 (위 또는 위) 인 경우 선택한 항목에 스크롤을 추가합니다. 이렇게하면 파일을 통해 위아래로 키를 올릴 때 모든 OS와 정확히 작동합니다.

그냥 말하면, 당신이 원하는 모든 것을 깨뜨리십시오. 그러나 왜 당신이 그것을 깨고 있는지 알아보고 사용자는 아무것도 눈치 채지 못합니다.

jQuery에서 당신은 할 수 있습니다 :

$().keydown(function(e) { return e.keyCode != 38 && e.keyCode != 40; });

아마도,하지만 모두가 알고 이해하는 컨벤션을 어기는 것은 일반적으로 좋은 생각이 아닙니다.

키 다운 이벤트를 듣고 기본 동작을 방지하십시오.

jQuery에서

$(document).on('keydown.yournamespace', function(e) {e.preventDefault();});

jQuery에서

$("*").keypress(function(e){e.preventDefault(); return false;});
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top