대한 다른 질문 나는 구성 이 답변 을 포함하여, 이 샘플 코드를 .
이 코드에서 마우스 휠을 사용하여 HTML5 Canvas를 확대 / 축소합니다. Chrome과 Firefox의 속도 차이를 정상화하는 코드가 있습니다. 그러나 Safari의 확대 / 축소 처리는 그 어느 것보다 훨씬 빠릅니다.
현재 가지고있는 코드는 다음과 같습니다.
var handleScroll = function(e){
var delta = e.wheelDelta ? e.wheelDelta/40 : e.detail ? -e.detail/3 : 0;
if (delta) ...
return e.preventDefault() && false;
};
canvas.addEventListener('DOMMouseScroll',handleScroll,false); // For Firefox
canvas.addEventListener('mousewheel',handleScroll,false); // Everyone else
Chrome v10 / 11, Firefox v4, Safari v5, Opera v11 및 IE9에서 동일한 양의 마우스 휠 롤링에 대해 동일한 '델타'값을 얻는 데 어떤 코드를 사용할 수 있습니까?
이 질문 은 관련이 있지만 정답은 없습니다.
편집 : 추가 조사에 따르면 하나의 스크롤 이벤트 '위로'는 다음과 같습니다.
| evt.wheelDelta | evt.detail ------------------ + ---------------- + ------------ 사파리 v5 / Win7 | 120 | 0 Safari v5 / OS X | 120 | 0 Safari v7 / OS X | 12 | 0 크롬 v11 / Win7 | 120 | 0 크롬 v37 / Win7 | 120 | 0 Chrome v11 / OS X | 3 (!) | 0 (아마도 틀렸다) Chrome v37 / OS X | 120 | 0 IE9 / Win7 | 120 | 찾으시는 주소가 없습니다 오페라 v11 / OS X | 40 | -1 오페라 v24 / OS X | 120 | 0 오페라 v11 / Win7 | 120 | -삼 Firefox v4 / Win7 | 미정의 | -삼 Firefox v4 / OS X | 미정의 | -1 Firefox v30 / OS X | 미정의 | -1
또한 OS X에서 MacBook 트랙 패드를 사용하면 느리게 움직일 때도 다른 결과를 얻을 수 있습니다.
- Safari 및 Chrome에서
wheelDelta
마우스 휠의 값은 120이 아니라 3입니다. - 파이어 폭스에서는
detail
보통2
때로 사용1
하지만 때로는 매우 느리게 스크롤 할 때 이벤트 핸들러가 전혀 발생하지 않습니다 .
따라서 질문은 다음과 같습니다.
이 동작을 차별화하는 가장 좋은 방법은 무엇입니까 (이상적으로 사용자 에이전트 또는 OS 스니핑 없음)?
e.wheelDelta/120
않습니까?