MDN이 dispatchEvent()를 도입할 때 dispatchEvent()
同步运行,但没有找到像MDN或HTML Standard这样的正式文档提到html click()
메서드가 동기적으로 실행되거나 합성 이벤트가 동기적으로 실행된다고 말한 것을 발견했습니다. 누군가 나와 관련 파일을 공유할 수 있나요?
정말 감사해요!
아니면 직접 결론에 도달하는 대신 문서에 일부 구현 단계가 설명되어 있을 수도 있나요? dispatchEvent()
和 click()
都会将 isTrusted
属性设置为 false,但不确定 eventListener
통화 시간이 이것에 달려 있는지 확인했습니다.
각 알고리즘 단계에는 "병렬화", "대기열 작업"이 표시되지 않거나 이에 연결된 사양의 모든 항목이 동기식으로 실행됩니다. *
정식 알고리즘의 내용dispatch대상 이벤트는 항상 동기식으로 실행됩니다.
EventTarget#dispatchEvent()
、HTMLElement#click()
또는 실제 사용자가 시작한 이벤트에서 비롯됩니다.혼란스럽게도 대부분의 경우에 이 예약 이벤트 알고리즘 자체는 작업에 대한 대기 호출로 래핑되므로 실제로 이벤트 발생은 비동기식입니다.
예를 들어 이미지가 로드될 때 a>
여기서 "큐 요소 작업"은 큐 작업 알고리즘을 호출하고 "트리거 이벤트"는 >스케줄링 알고리즘을 호출합니다.
그렇습니다. 이 경우에는 이미지 로딩이 실제로 발생한 후
load
이벤트가 비동기적으로 실행됩니다.이제
EventTarget#dispatchEvent()
EventTarget#dispatchEvent()
(和HTMLElement#click( )
(및HTMLElement#click( )
, 궁극적으로 많은 이벤트 구축 단계와 동일), 새로운 작업을 대기열에 추가하지 않고 dispatch 알고리즘을 직접 호출하는 것을 볼 수 있습니다. .알고리즘을 동기식으로 호출할 뿐만 아니라 알고리즘 결과를 호출자에게 반환하기도 합니다. 따라서 알고리즘은 병렬로 처리될 수 없으며 호출자는 결과를 얻으려면 모든 핸들러를 동기적으로 호출해야 합니다.
* 어쩌면 다른 경우도 있을 수 있지만 저는 그에 대해 알지 못합니다. 만약 그런 경우가 있었다면 충분히 명확했을 것입니다.