위아래로 스크롤하기위한 사용자 지정 이벤트를 만들려면 어떻게해야합니까?

조지 칼린

MDN은 (내가 잘하지 않았다)하는 방법을 사용자 정의 이벤트를 만드는 나에게 말했다

var event = new Event('build');

// Listen for the event.
elem.addEventListener('build', function (e) { ... }, false);

// Dispatch the event.
elem.dispatchEvent(event);

마우스 스크롤을 감지하는 방법도 알고 있습니다.

var doScroll = function (e) {
    // cross-browser wheel delta
    e = window.event || e;
    var delta = Math.max(-1, Math.min(1, (e.wheelDelta || -e.detail)));

    // Do something with `delta`
    document.body.innerHTML = delta;

    e.preventDefault();
};

if (window.addEventListener) {
    window.addEventListener("mousewheel", doScroll, false);
    window.addEventListener("DOMMouseScroll", doScroll, false);
} else {
    window.attachEvent("onmousewheel", doScroll);
}

하지만이 두 가지를 서로 혼합하고 사용자 지정 이벤트를 만드는 방법을 모르기 때문에 다음과 같은 것을 가질 수 있습니다.

window.addEventListener('scrollUp', sUpFunction);
window.addEventListener('scrollDown', sDownFunction);

감사합니다.

샤 하르 카자 즈

먼저 표준화되지 않은 "mousewheel"이벤트 대신 "wheel"이벤트사용합니다 . scrollUp 및 scrollDown 사용자 지정 이벤트 전달의 간단한 구현을 만들었습니다.

편집하다

IE도 지원하기 위해 CustomEvent대한 IE polyfill을 추가했습니다.

// For IE support
(function () {
  if ( typeof window.CustomEvent === "function" ) return false; //If not IE

  function CustomEvent ( event, params ) {
    params = params || { bubbles: false, cancelable: false, detail: undefined };
    var evt = document.createEvent( 'CustomEvent' );
    evt.initCustomEvent( event, params.bubbles, params.cancelable, params.detail );
    return evt;
   }

  CustomEvent.prototype = window.Event.prototype;

  window.CustomEvent = CustomEvent;
})();

let element = document.getElementsByClassName("scroll-area")[0],
scrollUpEvent = new CustomEvent("scrollUp"),
scrollDownEvent = new CustomEvent("scrollDown");

function scrollDown(){
  console.log("scrolled down");
}
function scrollUP(){
  console.log("scrolled up");
}

function scrollHappened(e){
  if(e.deltaY < 0){
    element.dispatchEvent(scrollUpEvent);
  } else {
    element.dispatchEvent(scrollDownEvent);
  }
}
element.addEventListener("wheel", scrollHappened);
element.addEventListener("scrollUp", scrollUP);
element.addEventListener("scrollDown", scrollDown);
.scroll-area {
  border: solid 2px black;
  height: 30px;
}
<div class="scroll-area">Scroll on me</div>

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

DeJaVu를 기반으로 사용자 지정 글꼴을 만들려면 어떻게해야합니까?

분류에서Dev

부트 스트랩을 사용하여 이러한 이미지를 동일한 크기로 만들려면 어떻게해야합니까?

분류에서Dev

Python으로 사용자 지정 그래프를 만들어 이미지로 라텍스로 내보내려면 어떻게해야합니까?

분류에서Dev

고유 ID에서 모든 사용자를 처리하기 위해 단일 동적 사용자 페이지를 만들려면 어떻게해야합니까?

분류에서Dev

SVG를 사용하여 이미지를 60 % 만 회색조로 만들려면 어떻게해야합니까?

분류에서Dev

Coffeescript를 사용하여 Framer Studio (Framer.js)에서 사용자 지정 이벤트를 만들고 트리거하려면 어떻게해야합니까?

분류에서Dev

재료를 선택적으로 지원하는 사용자 지정 양식 컨트롤을 만들려면 어떻게해야합니까?

분류에서Dev

Selenium에서 내 firefox를 사용하게하려면 어떻게해야합니까 (새로 만들지 않음).

분류에서Dev

Drupal-나만의 사용자 지정보기를 만들려면 어떻게해야합니까?

분류에서Dev

Java로 GUI 기반 텍스트 어드벤처 게임을 만들고 있습니다. 결과를 표시하기 위해 메시지 상자를 업데이트하려면 어떻게해야합니까?

분류에서Dev

HTML CSS 만 사용하여 고정 위치 헤더 및 측면 탐색이있는 반응 형 페이지를 만들려면 어떻게해야합니까?

분류에서Dev

사용자가 아래로 스크롤 할 때 헤더의 텍스트를 더 작게 만들려면 어떻게해야합니까?

분류에서Dev

Rails의 사용자 지정 환경을 기본 환경으로 만들려면 어떻게해야합니까?

분류에서Dev

스크립트를 실행하기 위해 사용자 지정 터미널 명령을 생성하려면 어떻게해야합니까?

분류에서Dev

사용자가 이벤트를 클릭하여 강제로 아래로 스크롤 할 수 있도록하려면 어떻게해야합니까?

분류에서Dev

Terminator를 내 사용자 지정 레이아웃으로 시작하려면 어떻게해야합니까?

분류에서Dev

Terminator를 내 사용자 지정 레이아웃으로 시작하려면 어떻게해야합니까?

분류에서Dev

한 사용자 만 다른 계정으로 su를 허용하려면 어떻게해야합니까?

분류에서Dev

사용중인 컨트롤 페인트 이벤트를 자동으로 감지하려면 어떻게해야합니까?

분류에서Dev

한 줄 문장으로 만들기 위해 <p> 태그 안에 내 자바 스크립트를 표시하려면 어떻게해야합니까?

분류에서Dev

스윙이있는 이미지를 추가하려면 어떻게해야하며 내 창 크기로 만들려면 어떻게해야합니까?

분류에서Dev

지정된 요소가 맨 위에 있도록 페이지를 아래로 스크롤하려면 어떻게해야합니까?

분류에서Dev

사용자를 만들 때 기본 그룹을 설정하려면 어떻게해야합니까?

분류에서Dev

내 사용자 지정 컨트롤을 Xamarin Forms에서 플로팅하려면 어떻게해야합니까?

분류에서Dev

Javascript를 사용하여 기존 이벤트를 종료하지 않고 일치하는 문자열을 래핑하려면 어떻게해야합니까?

분류에서Dev

캔버스를 사용하지 않아도 회전하는 Wheel of Fortune 프로젝트를 만들려면 어떻게해야합니까?

분류에서Dev

SonarQube 사용자 지정 규칙에서 하위 노드를 방문하려면 어떻게해야합니까?

분류에서Dev

내 텍스트 상자 텍스트 길이를 정규식 만 사용하여 9 자리로 제한하려면 어떻게해야합니까?

분류에서Dev

Amazon API Gateway로 사용자 지정 엔드 포인트를 생성하려면 어떻게해야합니까?

Related 관련 기사

  1. 1

    DeJaVu를 기반으로 사용자 지정 글꼴을 만들려면 어떻게해야합니까?

  2. 2

    부트 스트랩을 사용하여 이러한 이미지를 동일한 크기로 만들려면 어떻게해야합니까?

  3. 3

    Python으로 사용자 지정 그래프를 만들어 이미지로 라텍스로 내보내려면 어떻게해야합니까?

  4. 4

    고유 ID에서 모든 사용자를 처리하기 위해 단일 동적 사용자 페이지를 만들려면 어떻게해야합니까?

  5. 5

    SVG를 사용하여 이미지를 60 % 만 회색조로 만들려면 어떻게해야합니까?

  6. 6

    Coffeescript를 사용하여 Framer Studio (Framer.js)에서 사용자 지정 이벤트를 만들고 트리거하려면 어떻게해야합니까?

  7. 7

    재료를 선택적으로 지원하는 사용자 지정 양식 컨트롤을 만들려면 어떻게해야합니까?

  8. 8

    Selenium에서 내 firefox를 사용하게하려면 어떻게해야합니까 (새로 만들지 않음).

  9. 9

    Drupal-나만의 사용자 지정보기를 만들려면 어떻게해야합니까?

  10. 10

    Java로 GUI 기반 텍스트 어드벤처 게임을 만들고 있습니다. 결과를 표시하기 위해 메시지 상자를 업데이트하려면 어떻게해야합니까?

  11. 11

    HTML CSS 만 사용하여 고정 위치 헤더 및 측면 탐색이있는 반응 형 페이지를 만들려면 어떻게해야합니까?

  12. 12

    사용자가 아래로 스크롤 할 때 헤더의 텍스트를 더 작게 만들려면 어떻게해야합니까?

  13. 13

    Rails의 사용자 지정 환경을 기본 환경으로 만들려면 어떻게해야합니까?

  14. 14

    스크립트를 실행하기 위해 사용자 지정 터미널 명령을 생성하려면 어떻게해야합니까?

  15. 15

    사용자가 이벤트를 클릭하여 강제로 아래로 스크롤 할 수 있도록하려면 어떻게해야합니까?

  16. 16

    Terminator를 내 사용자 지정 레이아웃으로 시작하려면 어떻게해야합니까?

  17. 17

    Terminator를 내 사용자 지정 레이아웃으로 시작하려면 어떻게해야합니까?

  18. 18

    한 사용자 만 다른 계정으로 su를 허용하려면 어떻게해야합니까?

  19. 19

    사용중인 컨트롤 페인트 이벤트를 자동으로 감지하려면 어떻게해야합니까?

  20. 20

    한 줄 문장으로 만들기 위해 <p> 태그 안에 내 자바 스크립트를 표시하려면 어떻게해야합니까?

  21. 21

    스윙이있는 이미지를 추가하려면 어떻게해야하며 내 창 크기로 만들려면 어떻게해야합니까?

  22. 22

    지정된 요소가 맨 위에 있도록 페이지를 아래로 스크롤하려면 어떻게해야합니까?

  23. 23

    사용자를 만들 때 기본 그룹을 설정하려면 어떻게해야합니까?

  24. 24

    내 사용자 지정 컨트롤을 Xamarin Forms에서 플로팅하려면 어떻게해야합니까?

  25. 25

    Javascript를 사용하여 기존 이벤트를 종료하지 않고 일치하는 문자열을 래핑하려면 어떻게해야합니까?

  26. 26

    캔버스를 사용하지 않아도 회전하는 Wheel of Fortune 프로젝트를 만들려면 어떻게해야합니까?

  27. 27

    SonarQube 사용자 지정 규칙에서 하위 노드를 방문하려면 어떻게해야합니까?

  28. 28

    내 텍스트 상자 텍스트 길이를 정규식 만 사용하여 9 자리로 제한하려면 어떻게해야합니까?

  29. 29

    Amazon API Gateway로 사용자 지정 엔드 포인트를 생성하려면 어떻게해야합니까?

뜨겁다태그

보관