javascript 이벤트: 이벤트 대상 getEvent 함수 가 져 오기
function getEvent(event){
return event || window.event;
}
우 리 는 getEvent 를 사용 할 때 이렇게 호출 할 수 있 습 니 다.
function foo(event){
var evt = getEvent(event);
alert(evt);
}
그리고 foo 함 수 를 onclick 이벤트 에 연결 합 니 다.
그러나 자주 사용 하 는 것 은 foo 함수 에 인자 가 없 거나 첫 번 째 인자 가 들 어 오지 않 았 습 니 다. 저 희 는 arguments [0] 를 통 해 첫 번 째 인 자 를 얻 을 수 있 습 니 다.
IE 에서 이 벤트 는 윈도 우즈 이벤트 의 전역 변수 이 고 Firefox 등 브 라 우 저 에 서 는 이벤트 가 첫 번 째 매개 변수 로 foo 함수 에 들 어 오기 때문에 getEvent 는 다음 과 같이 변경 할 수 있 습 니 다.
function getEvent(event){
return arguments[0] || window.event;
}
이 때 일부 버 전의 브 라 우 저, 예 를 들 어 Firefox 에서 이벤트 대상 을 가 져 오지 못 하 는 문제 가 발생 할 수 있 습 니 다. 사실 이벤트 의 트리거 는 다음 과 같은 방식 으로 볼 수 있 습 니 다.
function {
foo();
}
이렇게 하면 첫 번 째 함 수 는 onclick 입 니 다. 즉, 이 벤트 는 기본적으로 첫 번 째 매개 변수 로 들 어 옵 니 다. foo 함 수 는 이 벤트 를 매개 변수 로 들 어 오지 않 아서 getEvent 의 유연성 을 심각하게 제한 하기 때문에 getEvent 함 수 를 수정 해 야 합 니 다.
우 리 는 arguments. callee 가 함수 자체 라 는 것 을 알 고 있 습 니 다. 익명 함수 에서 재 귀적 으로 사용 할 수 있 습 니 다. 그러면 arguments. callee. caller 는 이 함수 의 이전 함 수 를 호출 하 는 함 수 를 말 합 니 다.
예 를 들 어 getEvent 의 caller 는 foo 이 고 foo 의 caller 는 onclick 이 며 순서대로 유추 합 니 다.
그래서 우리 의 getEvent 함 수 는 결국 이렇게 쓸 수 있 습 니 다.
function getEvent(){
if(window.event){
return window.event;
}
var f = arguments.callee.caller;
do{
var e = f.arguments[0];
if(e && (e.constructor === Event || e.constructor===MouseEvent || e.constructor===KeyboardEvent)){
return e;
}
}while(f=f.caller);
}
다음으로 이동:http://blogread.cn/it/article/3997?f=wb
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
기초 정리 - 1문자 (String) 숫자 (Number) 불린 (Boolean) null undefined 심볼 (Symbol) 큰정수 (BigInt) 따옴표로 묶어 있어야 함 Not-A-Number - 숫자 데이터 / 숫자로 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.