window.addEventListener ( 'scroll', func)는 window.location = "# target"이후에 트리거됩니다.

user1846065

페이지에 버튼이 있습니다. 버튼을 클릭하면 페이지가 지정된 대상으로 스크롤 된 다음 이벤트에 대한 이벤트 리스너 window추가 scroll하지만 스크롤 이벤트는 다음에 사용자가 스크롤 할 때가 아니라 즉시 트리거됩니다.

아무도 이런 일이 발생하는 이유와 window지정된 대상으로 스크롤 한 후 스크롤 이벤트를 추가 할 수있는 방법을 말할 수 있습니까? Firefox 37.0.2를 사용하고 있습니다.

HTML

<button>Click Me!</button>
<!-- Enough br tags to make the page have a scroll bar -->
<div id="target">Text</div>

JS

document.getElementsByTagName('button')[0].addEventListener('click', function(){
    // Both of the following will trigger the scroll event:

    //window.location = '#target';
    //document.getElementById('target').scrollIntoView();

    window.addEventListener('scroll', function(){
        // Removes this function from the window's onscroll event so that it only triggers once
        this.removeEventListener('scroll', arguments.callee);
        alert('Triggered!');
    });
});
user1846065

댓글을 읽은 후 브라우저가 즉시 스크롤하지 않아 문제가 발생한 것 같습니다. 나는 이것을 1ms setTimeout지연 시키는 간단한 방법으로 해결할 수 있었다 addEventListener.

내 수정 된 코드는 다음과 같습니다.

document.getElementsByTagName('button')[0].addEventListener('click', function(){
    // Both of the following will work now:

    //window.location = '#target';
    //document.getElementById('target').scrollIntoView();

    setTimeout(function(){
        window.addEventListener('scroll', function(){
            // Removes this function from the window's onscroll event so that it only triggers once
            this.removeEventListener('scroll', arguments.callee);
            alert('Triggered!');
        });
    }, 1);
});

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

애니메이션 후 window.location

분류에서Dev

window.location.href의 슬래시는 루트 URL로 리디렉션됩니다.

분류에서Dev

jQuery (window) .resize 함수는 모든 단일 픽셀이 아닌 한 번만 트리거됩니다.

분류에서Dev

window.location이 localStorage에서 토큰을 제거했습니다.

분류에서Dev

$ (window) .resize는 브라우저 새로 고침에서만 트리거됩니까?

분류에서Dev

window.addEventListener에서 React 상태 업데이트

분류에서Dev

window.location.pathname은 이중 호스트 이름으로 리디렉션됩니다.

분류에서Dev

오늘 window.addEventListener 및 React Native에 문제가 있습니다.

분류에서Dev

선택 메뉴에 window.location이 필요한 이유는 무엇입니까?

분류에서Dev

window.location 변경 후 업데이트 속도가 느립니다.

분류에서Dev

Sharepoint window scroll not firing

분류에서Dev

window.location = window.location이 XSS에 취약 함

분류에서Dev

window.addEventListener로 만든 이벤트 핸들러를 선점하는 방법이 있습니까?

분류에서Dev

"또는"연산자가 window.location.pathname에서 작동하지 않습니다.

분류에서Dev

window.location.reload는 IE에서 해시를 고려하지 않습니다.

분류에서Dev

JavaScipt window.location

분류에서Dev

JavaScipt window.location

분류에서Dev

$ (window) .scroll ()에서 한 번 스크롤하는 방법에는 다른 스크롤 명령이 있습니다.

분류에서Dev

window.onbeforeunload가 파일 다운로드를 위해 window.location에서 호출됩니다.

분류에서Dev

document.location 또는 window.location이 작동하지 않는 이유는 무엇입니까?

분류에서Dev

클릭 이벤트에서 window.addEventListener가 실행되지 않음

분류에서Dev

React와 함께 window.location.reload를 사용하는 것이 맞습니까?

분류에서Dev

window.location이 실패했는지 어떻게 감지합니까?

분류에서Dev

Response.End () 후에 window.location.href가 작동하지 않습니다.

분류에서Dev

Response.End () 후에 window.location.href가 작동하지 않습니다.

분류에서Dev

window.location이 두 개의 다른 이벤트 처리기에서 변경되었습니다. 실행을 중지하거나 우선 순위를 결정하는 방법은 무엇입니까?

분류에서Dev

window.location.href에서 QueryString을 전달하는 방법은 무엇입니까?

분류에서Dev

window.location에서 값을 전달하는 방법은 무엇입니까?

분류에서Dev

Firefox : 웹 사이트에서 window.location 비활성화

Related 관련 기사

  1. 1

    애니메이션 후 window.location

  2. 2

    window.location.href의 슬래시는 루트 URL로 리디렉션됩니다.

  3. 3

    jQuery (window) .resize 함수는 모든 단일 픽셀이 아닌 한 번만 트리거됩니다.

  4. 4

    window.location이 localStorage에서 토큰을 제거했습니다.

  5. 5

    $ (window) .resize는 브라우저 새로 고침에서만 트리거됩니까?

  6. 6

    window.addEventListener에서 React 상태 업데이트

  7. 7

    window.location.pathname은 이중 호스트 이름으로 리디렉션됩니다.

  8. 8

    오늘 window.addEventListener 및 React Native에 문제가 있습니다.

  9. 9

    선택 메뉴에 window.location이 필요한 이유는 무엇입니까?

  10. 10

    window.location 변경 후 업데이트 속도가 느립니다.

  11. 11

    Sharepoint window scroll not firing

  12. 12

    window.location = window.location이 XSS에 취약 함

  13. 13

    window.addEventListener로 만든 이벤트 핸들러를 선점하는 방법이 있습니까?

  14. 14

    "또는"연산자가 window.location.pathname에서 작동하지 않습니다.

  15. 15

    window.location.reload는 IE에서 해시를 고려하지 않습니다.

  16. 16

    JavaScipt window.location

  17. 17

    JavaScipt window.location

  18. 18

    $ (window) .scroll ()에서 한 번 스크롤하는 방법에는 다른 스크롤 명령이 있습니다.

  19. 19

    window.onbeforeunload가 파일 다운로드를 위해 window.location에서 호출됩니다.

  20. 20

    document.location 또는 window.location이 작동하지 않는 이유는 무엇입니까?

  21. 21

    클릭 이벤트에서 window.addEventListener가 실행되지 않음

  22. 22

    React와 함께 window.location.reload를 사용하는 것이 맞습니까?

  23. 23

    window.location이 실패했는지 어떻게 감지합니까?

  24. 24

    Response.End () 후에 window.location.href가 작동하지 않습니다.

  25. 25

    Response.End () 후에 window.location.href가 작동하지 않습니다.

  26. 26

    window.location이 두 개의 다른 이벤트 처리기에서 변경되었습니다. 실행을 중지하거나 우선 순위를 결정하는 방법은 무엇입니까?

  27. 27

    window.location.href에서 QueryString을 전달하는 방법은 무엇입니까?

  28. 28

    window.location에서 값을 전달하는 방법은 무엇입니까?

  29. 29

    Firefox : 웹 사이트에서 window.location 비활성화

뜨겁다태그

보관