명명 된 요소 ID는 JavaScript Globals로 참조 할 수 있습니다
> 알아요? ID가있는 DOM 요소는 JavaScript의 글로벌 변수로 액세스 할 수 있습니까? 이것은 오랫동안 주변에 있었던 기능이지만 처음으로 단지 그것을 탐구했습니다.
또는
를 사용하여 새로운 변수를 정의하여 요소를 선택합니다.
그러나 실제로, 우리는 이러한 번거로운 작업 없이는<div id="cool"></div>
querySelector("#cool")
getElementById("cool")
일부 배경
이 방법은 HTML 사양에 설명되어 있으며 "창 객체에 대한 이름의 액세스"로 설명합니다.
var el = querySelector("#cool");
입니다
#cool
window[ELEMENT_ID]
<:> 슈퍼 베르사 :
와 같은 위험한 적용 범위를 제거하기 때문에 중요합니다., 그렇지 않으면 경보 API를 무효화하여 충돌이 발생합니다. 이 보호 기술은 아마도 당신이 (당신이 나와 같다면) 먼저 배우는 이유 일 가능성이 높습니다.
지연에 대한 기사
나는 이전에 이름이 지정된 글로벌 요소를 참조로 사용하는 것이 최상의 솔루션이 아닐 수 있다고 말했다. 여러 가지 이유가 있으며 TJ Vantoll은 그의 블로그에서 이것에 대해 자세히 설명했으며 여기에 요약 할 것입니다 : .
DOM이 변경되면 참조도 변경됩니다. 이로 인해 코드는 매우 "연약한"(사양의 용어)을 매우 중요하게 만들고 HTML과 JavaScript 간의 문제가 너무 엄격 할 수 있습니다.
우발적 인용이 너무 쉽습니다. 간단한 오타는 이름이 지정된 글로벌 변수를 참조하고 예상치 못한 결과를 제공합니다. -
구현 방법은 브라우저에 따라 다릅니다. 예를 들어
는 ID (예 : <a> )가있는 앵커에 액세스 할 수 있지만 일부 브라우저 (예 : Safari 및 Firefox)는 콘솔에서 참조 오류를 반환합니다. </a>
결과가 발생할 것이라고 생각하는 것을 반환하지 않을 수 있습니다. 사양에 따라 DOM에 동일한 명명 된 요소의 여러 인스턴스가있는 경우 (예 : 2 <div> 인스턴스) 브라우저는 이러한 인스턴스의 배열을 포함하는 htmlcollection을 반환해야합니다. 그러나 Firefox는 첫 번째 인스턴스 만 반환합니다. 다시, 사양은 요소 트리에서 ID 인스턴스를 사용해야한다고 명시합니다. 그러나 그렇게하는 것은 페이지가 작동하는 것을 막을 수는 없습니다.
<li> 가능한 성능 비용? <the> 내 말은, 브라우저는 해당 참조 목록을 작성하고 유지해야합니다. 일부 사람들은 지명 된 글로벌 변수가 실제로 한 번의 테스트에서 더 잘 수행되고 최근 테스트에서는 더 잘 수행되는 Stackoverflow 스레드에서 테스트를 실행했습니다. <strong>
</strong>
<utions> 기타 예방 조치 </utions></the>
</li>
<ab> 우리가 지명 된 글로벌 변수의 사용에 대한 비판을 포기하고 계속 사용한다고 가정합니다. 모두 제일 좋다. 그러나이 일을 할 때 고려해야 할 몇 가지 사항이 있습니다. <li>
polyfills <strong>
<e>는 극단적으로 들릴지 모르지만 이러한 유형의 글로벌 검사는 폴리 플릴의 일반적인 설정 요구 사항입니다. 다음 예제를 확인하십시오. 새로운 Cookiestore API를 사용하여 쿠키를 설정하여 아직 지원하지 않는 브라우저에서 폴리 플릴을 설정합니다.
</e></strong>
<fine fine>이 코드는 크롬에서 잘 작동하지만 Safari에서는 다음과 같은 오류가 발생합니다.
<code><a></a>
글을 쓰는 시점에서 Safari는 Cookiestore API를 지원하지 않습니다. 따라서 IMG 요소 ID가 Cookiestore Global 변수와 충돌하는 전역 변수를 생성하기 때문에 PolyFill은 적용되지 않습니다.
javaScript API 업데이트
우리는 상황을 변경하고 다른 문제를 찾을 수 있습니다. 즉, 브라우저의 JavaScript 엔진에 대한 업데이트는 명명 된 요소의 전역 참조를 중단 할 수 있습니다. -
예 :
이 스크립트는 입력 요소를 참조하고 초점 ()을 호출합니다. 잘 작동합니다. 그러나 우리는 그것이 얼마나 오래 작동할지 모릅니다.
<div><that> 브라우저가 BarcodeDetector API를 지원하기 시작하면 입력 요소를 참조하는 데 사용하는 글로벌 변수가 작동을 중지합니다. 당시 Window.barcodedetector 글로벌 변수는 더 이상 입력 요소에 대한 참조가 아니며 .focus ()는 "wind <p>
</p> 결론
<ar> 우리 가이 시점에 어떻게 도착했는지 요약 해 보겠습니다
<h3>
<ows> 모든 주요 브라우저는 ID (또는 경우에 따라 이름 속성)를 사용하여 각 DOM 요소에 대한 전역 참조를 자동으로 생성합니다. </ows>
</h3>
<el> 글로벌 참조를 통해 이러한 요소에 액세스하는 것은 신뢰할 수 없으며 위험 할 수 있습니다. 대신 <or> 또는 <p>를 사용하십시오. </p>
<ences> 글로벌 참조가 자동으로 생성되므로 코드에 약간의 부작용이있을 수 있습니다. ID 속성을 필요로하지 않는 한 ID 속성을 사용하지 않는 좋은 이유입니다. <ul>
<li>
궁극적으로 JavaScript에서 명명 된 글로벌 변수를 사용하지 않는 것이 가장 좋습니다. 나는 사양이 "연약한"코드를 일으키는 것에 대해 말한 내용을 앞서 인용했지만 다음은 이것을 강조하는 전문입니다.
</li>
<r> 일반적으로 말하면, 이것에 의존하면 깨지기 쉬운 코드로 이어질 것입니다. 예를 들어 새로운 기능이 웹 플랫폼에 추가되므로 시간이 지남에 따라 결국이 API에 매핑 될 수있는 ID. 이 작업을 수행하지 마십시오. <li>
<code>querySelector
나는 HTML 사양 자체 가이 기능을 피하는 것이 모든 것을 말하는 것을 제안한다고 생각합니다. getElementById
.
DOM이 변경되면 참조도 변경됩니다. 이로 인해 코드는 매우 "연약한"(사양의 용어)을 매우 중요하게 만들고 HTML과 JavaScript 간의 문제가 너무 엄격 할 수 있습니다.
- 우발적 인용이 너무 쉽습니다.
-
구현 방법은 브라우저에 따라 다릅니다. 예를 들어
는 ID (예 : 결과가 발생할 것이라고 생각하는 것을 반환하지 않을 수 있습니다. 사양에 따라 DOM에 동일한 명명 된 요소의 여러 인스턴스가있는 경우 (예 : 2<a> )가있는 앵커에 액세스 할 수 있지만 일부 브라우저 (예 : Safari 및 Firefox)는 콘솔에서 참조 오류를 반환합니다. </a>
<div> 인스턴스) 브라우저는 이러한 인스턴스의 배열을 포함하는 htmlcollection을 반환해야합니다. 그러나 Firefox는 첫 번째 인스턴스 만 반환합니다. 다시, 사양은 요소 트리에서 ID 인스턴스를 사용해야한다고 명시합니다. 그러나 그렇게하는 것은 페이지가 작동하는 것을 막을 수는 없습니다. <li> 가능한 성능 비용? <the> 내 말은, 브라우저는 해당 참조 목록을 작성하고 유지해야합니다. 일부 사람들은 지명 된 글로벌 변수가 실제로 한 번의 테스트에서 더 잘 수행되고 최근 테스트에서는 더 잘 수행되는 Stackoverflow 스레드에서 테스트를 실행했습니다. <strong> </strong> <utions> 기타 예방 조치 </utions></the> </li> <ab> 우리가 지명 된 글로벌 변수의 사용에 대한 비판을 포기하고 계속 사용한다고 가정합니다. 모두 제일 좋다. 그러나이 일을 할 때 고려해야 할 몇 가지 사항이 있습니다. <li> polyfills <strong> <e>는 극단적으로 들릴지 모르지만 이러한 유형의 글로벌 검사는 폴리 플릴의 일반적인 설정 요구 사항입니다. 다음 예제를 확인하십시오. 새로운 Cookiestore API를 사용하여 쿠키를 설정하여 아직 지원하지 않는 브라우저에서 폴리 플릴을 설정합니다. </e></strong> <fine fine>이 코드는 크롬에서 잘 작동하지만 Safari에서는 다음과 같은 오류가 발생합니다. <code><a></a>
글을 쓰는 시점에서 Safari는 Cookiestore API를 지원하지 않습니다. 따라서 IMG 요소 ID가 Cookiestore Global 변수와 충돌하는 전역 변수를 생성하기 때문에 PolyFill은 적용되지 않습니다. -
예 :
이 스크립트는 입력 요소를 참조하고 초점 ()을 호출합니다. 잘 작동합니다. 그러나 우리는 그것이 얼마나 오래 작동할지 모릅니다.
<div><that> 브라우저가 BarcodeDetector API를 지원하기 시작하면 입력 요소를 참조하는 데 사용하는 글로벌 변수가 작동을 중지합니다. 당시 Window.barcodedetector 글로벌 변수는 더 이상 입력 요소에 대한 참조가 아니며 .focus ()는 "wind <p> </p> 결론 <ar> 우리 가이 시점에 어떻게 도착했는지 요약 해 보겠습니다 <h3> <ows> 모든 주요 브라우저는 ID (또는 경우에 따라 이름 속성)를 사용하여 각 DOM 요소에 대한 전역 참조를 자동으로 생성합니다. </ows> </h3> <el> 글로벌 참조를 통해 이러한 요소에 액세스하는 것은 신뢰할 수 없으며 위험 할 수 있습니다. 대신 <or> 또는 <p>를 사용하십시오. </p> <ences> 글로벌 참조가 자동으로 생성되므로 코드에 약간의 부작용이있을 수 있습니다. ID 속성을 필요로하지 않는 한 ID 속성을 사용하지 않는 좋은 이유입니다. <ul> <li> 궁극적으로 JavaScript에서 명명 된 글로벌 변수를 사용하지 않는 것이 가장 좋습니다. 나는 사양이 "연약한"코드를 일으키는 것에 대해 말한 내용을 앞서 인용했지만 다음은 이것을 강조하는 전문입니다. </li> <r> 일반적으로 말하면, 이것에 의존하면 깨지기 쉬운 코드로 이어질 것입니다. 예를 들어 새로운 기능이 웹 플랫폼에 추가되므로 시간이 지남에 따라 결국이 API에 매핑 될 수있는 ID. 이 작업을 수행하지 마십시오. <li> <code>querySelector
나는 HTML 사양 자체 가이 기능을 피하는 것이 모든 것을 말하는 것을 제안한다고 생각합니다. getElementById
위 내용은 명명 된 요소 ID는 JavaScript Globals로 참조 할 수 있습니다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

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

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

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

새로운 프로젝트가 시작될 때, Sass 컴파일은 눈을 깜박이게합니다. 특히 BrowserSync와 짝을 이루는 경우 기분이 좋습니다.

이번 주에 플랫폼 뉴스 라운드 업 RONDUP, Chrome은로드에 대한 새로운 속성, 웹 개발자를위한 접근성 사양 및 BBC Move를 소개합니다.

이것은 처음으로 HTML 요소를보고 있습니다. 나는 그것을 잠시 동안 알고 있었지만 아직 스핀을 위해 그것을 가져 갔다. 그것은 꽤 시원하고 있습니다

구매 또는 빌드는 기술 분야의 고전적인 논쟁입니다. 신용 카드 청구서에 라인 항목이 없기 때문에 물건을 구축하는 것이 저렴할 수 있지만

이번 주에 타이포그래피를 검사하기위한 편리한 북마크 인 Roundup, JavaScript 모듈과 Facebook의 Facebook 등을 어떻게 가져 오는지 땜질하기 위해 대기하는 편리한 북마크 인 Roundup과 Facebook의

한동안 iTunes는 팟 캐스팅에서 큰 개 였으므로 "Podcast 구독"을 링크 한 경우 다음과 같습니다.

사이트에서 방문자 및 사용 데이터를 추적하는 데 도움이되는 분석 플랫폼이 많이 있습니다. 아마도 널리 사용되는 Google 웹 로그 분석
