웹 프론트엔드 JS 튜토리얼 Firefox에서 이벤트 객체 구현 code_javascript 기술을 지원하도록 허용

Firefox에서 이벤트 객체 구현 code_javascript 기술을 지원하도록 허용

May 16, 2016 pm 06:42 PM
firefox

일반적으로 IE 및 FireFox와 호환되기 위한 일반적인 이벤트 처리 방법은

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

btn.onclick=handle_btn_click;
function handler_btn_click(evt){
if(evt==null)evt=window.event;//IE
//이벤트 처리 .
}

간단한 프로그램의 경우에는 문제가 되지 않습니다.
그러나 일부 복잡한 프로그램의 경우 특정 기능이 이벤트와 전혀 직접 연결되지 않습니다.
다음은 이 문제를 해결하는 방법과 원리입니다.
JScript에서 함수 호출에는 func.caller 속성이 있습니다. 🎜>

function A()
{
B();
}
function B()
{
alert(B.caller)
}


B가 A 호출인 경우 B.caller는 A
또한 함수에는 인수 속성이 있습니다. 이 속성은 함수의 현재 실행 매개변수를 순회할 수 있습니다.


function myalert()
{
var arr=[]
for(var i=0; iarr[i]=myalert.arguments[i];
alert(arr.join("-"))
}
myalert(" hello","world ",1,2,3)


은 hello-world-1-2-3을 표시합니다.
(인수 수는 호출자와 관련되며 아무 것도 포함하지 않습니다. 관계의 매개변수 정의와 관련)
이 두 속성에 따라 첫 번째 함수의 이벤트 개체를 가져올 수 있습니다:


btn.onclick=handle_click;
function handler_click()
{
showcontent(); }
function showcontent()
{
var evt=SearchEvent()
if(evt&&evt.shiftKey)//이벤트 기반 호출이고 Shift 키를 누른 경우
창. open(global_helpurl);
else
location .href=global_helpurl;
}
function SearchEvent()
{
func=SearchEvent.caller
while(func!= null)
{
var arg0=func .arguments[0];
if(arg0)
{
if(arg0.constructor==Event) // 이벤트 객체인 경우
return arg0;
}
func= func.caller;
}
return null;
}


이 예에서는 SearchEvent를 사용하여 이벤트를 검색합니다. 여기서 'Event'는 FireFox의 event.constructor입니다.
이 예제를 실행하면
SearchEvent.caller는 showcontent이지만 showcontent.arguments[0]은 비어 있습니다. handler_click.
handle_click은 FireFox에 의해 호출되지만, 정의된 매개변수는 아니지만 호출되면 첫 번째 매개변수가 이벤트이므로 handler_click.arguments[0]이 이벤트입니다.
위의 지식을 바탕으로 결합할 수 있습니다! 프로토타입.__defineGetter__ FireFox에서 window.event를 구현하려면:
아래에 간단한 코드가 제공됩니다. 관심이 있으시면 추가하실 수 있습니다. (이미 수정했습니다.)



코드 복사 코드는 다음과 같습니다.
여기를 클릭하세요!!

Javascript와 JScript도 다릅니다. 전자는 클라이언트 측 스크립트이고 후자는 서버 측 스크립트이며 VBScript와 같이 서버에서 지원됩니다.
물론 여기서 이야기하려는 것은 아닙니다. 둘의 차이는 있지만 그냥 제 현재 수준(평균 아님)을 알려드리자면...
위 코드만 드린다면 이제 막 궁합공부를 시작하는 친구들은 힘들거라고 생각합니다.
여기서 설명하겠습니다. 먼저 위 코드의 사용법을 설명하겠습니다.
먼저 __defineGetter__ 및 __defineSetter__ 두 가지 메서드에 대한 설명을 살펴보겠습니다.
1. Getter는 메서드입니다. 속성 값을 가져오는 방법이고 Setter는 속성 값을 설정하는 방법입니다. 사전 정의된 핵심 개체 또는 사용자 정의 개체에 대해 getter 및 setter 메서드를 정의하여 기존 개체에 새 속성을 추가할 수 있습니다.
2. 언제 객체와 이벤트에 새로운 속성을 추가할 수 있나요?
1. 객체가 초기화되는 시기를 정의하세요
2. 객체를 정의한 후 Object자세한 사용법은 여기(주소: http://anbutu.javaeye.com/blog/post/194276)에서 __defineGetter__ 및 __defineSetter__에 대한 설명을 참조하세요.
그래서 우리는 FixPrototypeForGecko() 함수에 속성이 추가되는 것을 보았습니다. 물론 세 개의 객체는 각각 FF 아래에 추가됩니다.
HTMLElement는 "runtimeStyle" 속성을 추가하고 속성 값은 element_prototype_get_runtimeStyle 함수에서 반환된 값입니다.
창은 "event" 속성을 추가합니다. value는 window_prototype_get_event에서 반환된 값입니다.
Event는 "srcElement" 속성을 추가하고, 기본 속성 값은 event_prototype_get_srcElement 함수에서 반환된 값입니다.
이런 방식으로 FF그래서 브라우저가 FF인지 판단한 후 FixPrototypeForGecko() 프로세스를 실행합니다. 이때 이 세 객체는 FF 아래에 새로운 속성을 갖게 됩니다
그래서 DIV 태그를 클릭하면 팝업 창에 표시됩니다. "[object HTMLDivElement]"라는 단어에 도달하면 창 개체에 이벤트 속성을 성공적으로 추가했음을 의미합니다


if(window.addEventListener) {
FixPrototypeForGecko()
alert(window.event.srcElement)
}


element_prototype_get_runtimeStyle 프로세스와 event_prototype_get_srcElement 프로세스를 보면 반환된 값을 ​​​​쉽게 이해할 수 있습니다.
window_prototype_get_event() 프로세스가 어떻게 이벤트를 반환하는지 살펴보겠습니다
반환 프로세스의 값은 SearchEvent() 프로세스의 결과입니다.


function SearchEvent()
{
//IE
if(document.all)
return window.event
func=SearchEvent; 호출자;
while(func!=null)
{
var arg0=func.arguments[0]
if(arg0)
{
//if(arg0.constructor ==이벤트||arg0.constructor==MouseEvent)
if(arg0.constructor ==Event||arg0.constructor==MouseEvent || (typeof(arg0)=="object" && arg0.preventDefault && arg0. stopPropagation))
return arg0;
}
func=func.caller;
}
return null;

이 프로세스를 이해하려면 먼저 호출자와 인수라는 두 가지 방법을 이해해야 합니다(기사에 해당 설명이 있음)
여기서 생성자 속성에 대해 다시 설명하겠습니다. 반환되는 것은 해당 객체의 생성자입니다
그동안 루프, 경고(func) func.caller의 반환, 마지막 반환을 볼 수 있습니다. 이것이 마우스 클릭 이벤트입니다
div를 클릭한 후 handler_click() 프로세스가 실행되므로 최종 func.caller는 다음과 같습니다. 이때 funcj는 handler_click()이므로 꽤 입니다. 따라서 Handle_click.caller는 물론 Handle_click의 호출자는 물론 onclick 이벤트인 [MouseEvent]
추가한 것을 볼 수 있습니다. if(arg0.constructor==Event||arg0.constructor==MouseEvent) 의 조건, arg0.constructor의 현재 결과가 MouseEvent이기 때문입니다.
이것을 보고 나면 모두가 FF에서 이벤트를 작성하는 방법을 알고 있다고 믿습니다.
마지막으로 객체에 대한 이벤트 메소드를 등록하는 "addEventListener"에 대해 알아보겠습니다




코드 복사
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

<gum> : Bubble Gum Simulator Infinity- 로얄 키를 얻고 사용하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
Nordhold : Fusion System, 설명
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora : 마녀 트리의 속삭임 - Grappling Hook 잠금 해제 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Ubuntu Linux에서 Firefox Snap을 제거하는 방법은 무엇입니까? Ubuntu Linux에서 Firefox Snap을 제거하는 방법은 무엇입니까? Feb 21, 2024 pm 07:00 PM

Ubuntu Linux에서 FirefoxSnap을 제거하려면 다음 단계를 따르세요. 터미널을 열고 Ubuntu 시스템에 관리자로 로그인하세요. FirefoxSnap을 제거하려면 다음 명령을 실행하십시오. sudosnapremovefirefox 관리자 비밀번호를 묻는 메시지가 표시됩니다. 비밀번호를 입력하고 Enter를 눌러 확인하세요. 명령 실행이 완료될 때까지 기다립니다. 완료되면 FirefoxSnap이 완전히 제거됩니다. 이렇게 하면 Snap 패키지 관리자를 통해 설치된 Firefox 버전이 제거됩니다. 다른 수단(예: APT 패키지 관리자)을 통해 다른 버전의 Firefox를 설치한 경우에는 영향을 받지 않습니다. 위의 단계를 거쳐보세요

Mozilla Firefox를 제거할 수 있나요? Mozilla Firefox를 제거할 수 있나요? Mar 15, 2023 pm 04:40 PM

Mozilla Firefox는 제거할 수 있습니다. Firefox는 타사 브라우저이므로 필요하지 않은 경우 제거할 수 있습니다. 제거 방법: 1. 시작 메뉴에서 "Windwos 시스템" - "제어판"을 클릭합니다. 2. "제어판" 인터페이스에서 "프로그램 및 기능"을 클릭합니다. 3. 새 인터페이스에서 찾아 두 번 클릭합니다. Firefox 브라우저 아이콘 4. 제거 팝업 창에서 "다음"을 클릭합니다. 5. "제거"를 클릭합니다.

Firefox 113의 새로운 기능: AV1 애니메이션 지원, 향상된 비밀번호 생성기 및 PIP 기능 Firefox 113의 새로운 기능: AV1 애니메이션 지원, 향상된 비밀번호 생성기 및 PIP 기능 Mar 05, 2024 pm 05:20 PM

최근 뉴스에 따르면 Mozilla는 Firefox 112의 안정 버전을 출시하는 동시에 다음 주요 버전인 Firefox 113이 베타 채널에 진입하여 AV1 애니메이션, 향상된 비밀번호 생성기 및 PIP(Picture-in-Picture) 기능을 지원한다고 발표했습니다. Firefox 113의 새로운 주요 기능/특징은 다음과 같습니다. 비밀번호 생성기의 보안을 강화하기 위해 특수 문자를 도입하여 AV1 형식 애니메이션 이미지(AVIS) 지원 향상된 PIP 기능, 되감기 지원, 비디오 시간 표시, 전체 화면을 보다 쉽게 ​​활성화합니다. 모드는 Debian 및 Ubuntu 배포판용 공식 DEB 설치 파일을 제공합니다. 업데이트된 북마크 가져오기 기능, 가져온 북마크에 대한 아이콘이 기본적으로 지원됩니다. 하드웨어 가속 AV1 비디오 디코딩은 지원되는 하드웨어에서 w를 사용하여 기본적으로 활성화됩니다.

Scrapy에서 Mozilla Firefox를 사용하여 로그인하기 위해 QR 코드를 스캔하는 문제를 해결하는 방법은 무엇입니까? Scrapy에서 Mozilla Firefox를 사용하여 로그인하기 위해 QR 코드를 스캔하는 문제를 해결하는 방법은 무엇입니까? Jun 22, 2023 pm 09:50 PM

로그인이 필요한 웹사이트를 크롤링하는 크롤러에게 인증코드나 스캔코드 로그인은 매우 번거로운 문제입니다. Scrapy는 Python에서 사용하기 매우 쉬운 크롤러 프레임워크이지만 로그인을 위해 인증 코드를 처리하거나 QR 코드를 스캔할 때 몇 가지 특별한 조치를 취해야 합니다. 일반적인 브라우저인 Mozilla Firefox는 이 문제를 해결하는 데 도움이 되는 솔루션을 제공합니다. Scrapy의 핵심 모듈은 비동기식 요청만 지원하는 비틀어져 있지만 일부 웹사이트에서는 쿠키 사용을 요구하고

Ubuntu 23.10은 기본적으로 기본 Wayland 모드에서 Firefox를 실행합니다. Ubuntu 23.10은 기본적으로 기본 Wayland 모드에서 Firefox를 실행합니다. Feb 29, 2024 am 10:10 AM

Canonical은 최근 Ubuntu 23.10에서 Firefox Snap이 기본적으로 Wayland 모드에서 실행되도록 구성되었다고 발표했습니다. 참고: Ubuntu에는 현재 기본적으로 Wayland 세션이 있으며 Firefox도 정상적으로 작동할 수 있습니다. 그러나 현재 FirefoxSnap은 실제로 엄격한 기본 Wayland 모드가 아닌 XWayland 호환 모드에서 실행됩니다. Canonical은 HiDPI 디스플레이에서 인터페이스 흐림 및 스케일링 왜곡과 같은 문제가 발생하지 않도록 기본적으로 Wayland 모드에서 Firefox 브라우저를 실행하고 드래그 및 핀치와 같은 터치 제스처를 지원할 것이라고 발표했습니다. 위에서 언급했듯이 우분트는

Firefox 브라우저 Firefox 115 출시, Win7/Win8.1의 마지막 버전 지원 Firefox 브라우저 Firefox 115 출시, Win7/Win8.1의 마지막 버전 지원 Mar 04, 2024 pm 04:46 PM

오늘 최신 소식에 따르면 Mozilla는 오늘 Firefox 브라우저 Firefox 115의 안정 버전 업데이트를 공식 출시했습니다. 이번 업데이트에서 가장 주목할만한 점은 이것이 Win7/Win8, macOS10.12, 10.13 및 10.14를 지원하는 마지막 버전이라는 것입니다. 다운로드 주소: https://ftp.mozilla.org/pub/firefox/releases/115.0/Mozilla 공식 업데이트 로그에 명시됨: Microsoft는 2023년 1월에 Win7 및 Win8 시스템에 대한 지원을 종료할 예정이며, 오늘 출시된 Firefox 115 버전은 다음과 같습니다. 해당 시스템의 사용자가 받은 마지막 버전 업데이트. Win7 및 Win8 사용자

Firefox의 Apache/Nginx에서 Font Awesome이 표시되지 않는 문제를 해결하는 방법 Firefox의 Apache/Nginx에서 Font Awesome이 표시되지 않는 문제를 해결하는 방법 May 21, 2023 pm 05:43 PM

1. nginx 서버 솔루션 서버는 nginx를 사용하여 응답 헤더에 access-control-allow-origin 필드를 추가하는 방법은 add_header 지시어를 사용하는 것입니다. 구성 예: 다음과 같이 코드를 복사합니다: location/assets/ {gzip_staticon;expiresmax;add_headercache-controlpublic;add_headeraccess-control-allow-origin*;} 2. Apache 서버 솔루션 Fontawesome(firefox는 화재를 표시할 수 없음)

Firefox 115 베타 출시: 빠른 작업 소개 Firefox 115 베타 출시: 빠른 작업 소개 Mar 04, 2024 pm 03:10 PM

어제 새로운 소식: Mozilla는 Firefox 114 안정 버전 업데이트를 출시하는 동시에 개발 초점을 Firefox 115 버전으로 전환하고 오늘 베타 버전을 출시했습니다. Firefox 115에는 원래 버전 114에서 출시될 예정이었던 CookieBannerReduction 및 QuickActions 버튼이 도입되었다는 보고가 있습니다. 사용자가 Firefox 115 버전에서 CookieBannerReduction을 활성화하고 지원되는 웹사이트를 방문하면 브라우저는 쿠키 배너에 대한 쿠키 요청을 자동으로 거부합니다. 두 번째 기능은 주소 표시줄의 QuickActions 버튼입니다.

See all articles