>웹 프론트엔드 >JS 튜토리얼 >javascript 크로스 브라우저 이벤트 system_javascript 기술

javascript 크로스 브라우저 이벤트 system_javascript 기술

WBOY
WBOY원래의
2016-05-16 18:31:101112검색

그러나 실제로 JavaScript의 아버지는 이 모든 것을 지배할 수 없습니다. 그가 지원한 Netscape는 경쟁업체가 자사 제품을 순종적으로 사용할 수 있을 만큼 강력하지 않습니다. Microsoft는 JScript를 만들었고, 죽은 Macromedia는 ActionScript를 만들었으며 그 외에도 많은 것들이 있습니다. 이 지점은 꽤 복잡하다고 들었습니다. 그러나 브라우저의 내장 DOM 이벤트 모델을 사용하면 첫 번째 결과는 이를 사용하려면 DOM 개체, 창, 문서 또는 요소 노드를 사용해야 한다는 것입니다. 두 번째 결과는 각 브라우저가 서로 다른 지원을 갖는다는 것입니다. DOM은 이벤트 모델의 일관성을 보장할 수 없으며, 세 번째는 DOM 객체를 기반으로 하기 때문에 순환 참조가 쉽게 발생할 수 있다는 것입니다. Microsoft는 첫 번째 브라우저 전쟁에서 승리한 후 기본적으로 DOM 모델을 업데이트하지 않았습니다. w3c, ecma 및 기타 표준에 더 가까워지기 위해 지속적으로 업데이트되는 "표준 브라우저"로 두 진영으로 나뉘었습니다. 그러나 표준 브라우저는 모놀리식이 아닙니다. 예를 들어 FF는 마우스휠을 지원하지 않지만 DOMMouseScroll을 지원하며 오페라의 컨텍스트 메뉴를 제어할 수 없습니다. 우리가 직접 구현해야 합니다. 현재 두 호스트 모두 DOM2 이벤트 모델을 구현하고 있으며, 표준 모델은 addeventListener입니다. 이를 통해 동일한 요소가 동일한 유형의 여러 이벤트 콜백 함수를 바인딩할 수 있습니다. 인터넷에 있는 많은 addEvent 함수는 이를 이용하여 만들어지지만, 우선 IE의 콜백 함수는 이벤트 객체를 강제로 바인딩하지 않으며, 표준 브라우저에서는 Qiangwuqu의 첫 번째 매개변수가 이벤트 객체라고 되어 있습니다. 호출 함수는 강제 바인딩을 구현하지만 IE의 이벤트 개체도 표준 개체와 다릅니다. 또 다른 문제는 IE의 콜백 함수 실행 순서가 불규칙하고, 바인딩된 순서대로 실행하는 것이 표준입니다. 따라서 이 두 기능도 무효화됩니다. 여러 함수를 바인딩할 때는 이를 하나의 함수에 넣고 for 루프로 완성할 예정입니다.

코드 복사 코드는 다음과 같습니다.



<머리>


이벤트系统 by sai徒正美