찾다

 >  Q&A  >  본문

HTML의 click() 메소드가 동기적으로 실행되는 이유는 무엇입니까?

MDN이 dispatchEvent()를 도입할 때 dispatchEvent()同步运行,但没有找到像MDN或HTML Standard这样的正式文档提到html click()메서드가 동기적으로 실행되거나 합성 이벤트가 동기적으로 실행된다고 말한 것을 발견했습니다. 누군가 나와 관련 파일을 공유할 수 있나요? 정말 감사해요!

아니면 직접 결론에 도달하는 대신 문서에 일부 구현 단계가 설명되어 있을 수도 있나요? dispatchEvent()click() 都会将 isTrusted 属性设置为 false,但不确定 eventListener 통화 시간이 이것에 달려 있는지 확인했습니다.

P粉170438285P粉170438285326일 전471

모든 응답(1)나는 대답할 것이다

  • P粉344355715

    P粉3443557152024-03-20 13:04:40

    각 알고리즘 단계에는 "병렬화"< /a>, "대기열 작업"이 표시되지 않거나 이에 연결된 사양의 모든 항목이 동기식으로 실행됩니다. *

    정식 알고리즘의 내용dispatch대상 이벤트는 항상 동기식으로 실행됩니다. EventTarget#dispatchEvent()HTMLElement#click() 또는 실제 사용자가 시작한 이벤트에서 비롯됩니다.

    혼란스럽게도 대부분의 경우에 이 예약 이벤트 알고리즘 자체는 작업에 대한 대기 호출로 래핑되므로 실제로 이벤트 발생은 비동기식입니다.

    예를 들어 이미지가 로드될 때

    여기서 "큐 요소 작업"큐 작업 알고리즘을 호출하고 "트리거 이벤트">스케줄링 알고리즘을 호출합니다.

    그렇습니다. 이 경우에는 이미지 로딩이 실제로 발생한 후 load 이벤트가 비동기적으로 실행됩니다.


    이제 EventTarget#dispatchEvent()EventTarget#dispatchEvent()< /code> (和 HTMLElement#click( )(및 HTMLElement#click( ), 궁극적으로 많은 이벤트 구축 단계와 동일), 새로운 작업을 대기열에 추가하지 않고 dispatch 알고리즘을 직접 호출하는 것을 볼 수 있습니다. . < /p>

    알고리즘을 동기식으로 호출할 뿐만 아니라 알고리즘 결과를 호출자에게 반환하기도 합니다. 따라서 알고리즘은 병렬로 처리될 수 없으며 호출자는 결과를 얻으려면 모든 핸들러를 동기적으로 호출해야 합니다.

    으아아아

    * 어쩌면 다른 경우도 있을 수 있지만 저는 그에 대해 알지 못합니다. 만약 그런 경우가 있었다면 충분히 명확했을 것입니다.

    회신하다
    0
  • 취소회신하다