현재 스크립트 요소를 얻는 방법 :
1. 사용 document.currentScript
document.currentScript
<script>
스크립트가 현재 처리되고 있는 요소를 반환합니다 .
<script>
var me = document.currentScript;
</script>
혜택
- 간단하고 명시 적입니다. 신뢰할 수 있습니다.
- 스크립트 태그를 수정할 필요가 없습니다
- 비동기 스크립트 (
defer
& async
) 와 함께 작동
- 스크립트가 동적으로 삽입 된 상태에서 작동
문제
- 구형 브라우저 및 IE에서는 작동하지 않습니다.
- 모듈과 작동하지 않습니다
<script type="module">
2. 아이디로 스크립트를 선택
스크립트에 id 속성을 부여하면를 사용하여 id별로 쉽게 스크립트를 선택할 수 있습니다 document.getElementById()
.
<script id="myscript">
var me = document.getElementById('myscript');
</script>
혜택
- 간단하고 명시 적입니다. 신뢰할 수 있습니다.
- 거의 보편적으로 지원
- 비동기 스크립트 (
defer
& async
) 와 함께 작동
- 스크립트가 동적으로 삽입 된 상태에서 작동
문제
- 스크립트 태그에 맞춤 속성을 추가해야합니다.
id
일부 브라우저의 경우 일부 브라우저에서 속성이 이상한 동작을 일으킬 수 있음
3. data-*
속성을 사용하여 스크립트를 선택하십시오
스크립트에 data-*
속성을 부여하면 내부에서 쉽게 선택할 수 있습니다.
<script data-name="myscript">
var me = document.querySelector('script[data-name="myscript"]');
</script>
이전 옵션보다 이점이 거의 없습니다.
혜택
- 간단하고 명시 적입니다.
- 비동기 스크립트 (
defer
& async
) 와 함께 작동
- 스크립트가 동적으로 삽입 된 상태에서 작동
문제
- 스크립트 태그에 맞춤 속성을 추가해야합니다.
querySelector()
모든 브라우저에서 호환되지 않는 HTML5
id
속성을 사용하는 것보다 덜 널리 지원
- 주위에 얻을 것이다
<script>
으로 id
가장자리의 경우.
- 다른 요소가 페이지에서 동일한 데이터 속성 및 값을 갖는 경우 혼동 될 수 있습니다.
4. src로 스크립트를 선택하십시오
데이터 속성을 사용하는 대신 선택기를 사용하여 소스별로 스크립트를 선택할 수 있습니다.
<script src="//example.com/embed.js"></script>
embed.js에서 :
var me = document.querySelector('script[src="//example.com/embed.js"]');
혜택
- 신뢰성
- 비동기 스크립트 (
defer
& async
) 와 함께 작동
- 스크립트가 동적으로 삽입 된 상태에서 작동
- 맞춤 속성이나 ID가 필요하지 않습니다
문제
- 않습니다 하지 로컬 스크립트에 대한 작업
- 개발 및 생산과 같은 다른 환경에서 문제를 일으킬 것
- 정적이고 깨지기 쉬운. 스크립트 파일의 위치를 변경하려면 스크립트를 수정해야합니다
id
속성을 사용하는 것보다 덜 널리 지원
- 동일한 스크립트를 두 번로드하면 문제가 발생합니다
5. 모든 스크립트를 반복하여 원하는 스크립트를 찾으십시오.
또한 모든 스크립트 요소를 반복하고 각각 개별적으로 검사하여 원하는 것을 선택할 수 있습니다.
<script>
var me = null;
var scripts = document.getElementsByTagName("script")
for (var i = 0; i < scripts.length; ++i) {
if( isMe(scripts[i])){
me = scripts[i];
}
}
</script>
이를 통해 querySelector()
속성을 잘 지원하지 않는 이전 브라우저에서 이전 기술을 모두 사용할 수 있습니다 . 예를 들면 다음과 같습니다.
function isMe(scriptElem){
return scriptElem.getAttribute('src') === "//example.com/embed.js";
}
이것은 어떤 접근 방식의 이점과 문제를 물려 받지만 의존하지는 않지만 querySelector()
이전 브라우저에서 작동합니다.
6. 마지막으로 실행 된 스크립트를 가져옵니다
스크립트는 순차적으로 실행되므로 마지막 스크립트 요소는 현재 현재 실행중인 스크립트 인 경우가 많습니다.
<script>
var scripts = document.getElementsByTagName( 'script' );
var me = scripts[ scripts.length - 1 ];
</script>
혜택
- 단순한.
- 거의 보편적으로 지원
- 맞춤 속성이나 ID가 필요하지 않습니다
문제
- 않습니다 하지 비동기 스크립트 작업 (
defer
& async
)
- 않습니다 하지 동적으로 삽입 된 스크립트 작업