좀 막혔고 왜 이 코드가 숫자 편집기에서 숫자 변경을 위해 마우스 휠 이벤트를 가로채서 해석하지 못하게 하는지 잘 이해가 되지 않습니다. 가로채기 캡처 및 필터 이벤트가 작동하지 않는 이유 를 알고 싶습니다.
HTML 코드:
으아악자바스크립트 코드:
으아악지침: 입력한 숫자를 클릭하여 초점을 맞춘 다음 마우스 휠을 사용하세요. 자바스크립트 코드로 마우스 휠을 가로채는데 캡처 단계에서 주변
전파를 막아도 숫자는 계속 변합니다.
편의를 위해: https://jsfiddle.net/Ljku4gha/6/
기본 숫자 입력 필드(그리고 실제로는 슬라이더)를 사용하여 재사용 가능한 구성 요소를 작성하고 싶습니다. 사용자가 이러한 입력에서 스크롤 휠을 사용하여 숫자를 변경하는 것을 원하지 않습니다. 대신, 마우스휠은 스크롤 목적으로 주변의 일부 (알 수 없는!) div(아마도)에서 이벤트를 트리거해야 합니다. 그래서 숫자 편집기(및 슬라이더)가 어떤 방식으로든 마우스 휠 이벤트를 처리하지 못하도록 하고 싶습니다.
완전히 설명할 수는 없지만, 무슨 일이 일어나고 있는지에 대한 두 가지 가설이 있습니다.
내 첫 번째 생각은 이것이 브라우저가 사용자 이벤트(제 생각에는 "사용자 에이전트"라는 키워드)를 처리하는 방식에 따른 인공물이라는 것입니다. 그러나 브라우저가 사용자 이벤트를 처리하는 방법에 대해 읽을 수 있는 곳을 누군가 지적해 준다면 매우 환영할 것입니다. 그때까지 브라우저의 이벤트 처리에 대한 나의 이해는 다음과 같습니다.
*sad me*
지루한 대체 설명: 내가 잘못된 이벤트를 듣고 있는 걸까요?
숫자 입력의 기본 동작을 방지하려면
event.preventDefault()
를 사용하세요.2가지 개선 사항이 있습니다:
캡처로는 이 문제를 해결할 수 없습니다. 왜냐하면
안타깝게도 캡처하면 이벤트가 입력까지 버블링되기 전에 기본 동작이 발생합니다
그러므로
stopPropagation()
포획 단계에서는 도움이 되지 않습니다.