[JavaScript] 자바스크립트에서 <a> 태그 _blank의 부모창 조작 제한하기
2022. 7. 11. 16:32ㆍProgram/JavaScript
149_자바스크립트에서 <a> 태그 _blank의 부모창 조작 제한하기
[적용]
- 안전하게 _blank 속성을 사용하고 싶을 때
[내용]
target="_blank" 속성을 가진 a 태그로 윈도우 창을 열었을 때,
해당 창에서 window.opener를 사용해 부모창의 제어가 가능하다.
하지만 어느 정도의 위섬성을 내포하므로 rel="noopener"를 사용해 부모창의 제어를 제한할 수 있다.
_blank 속성의 a 태그를 자동으로 noopener 설정하는 예시를 확인해 보자.
HTML index.html
<ul>
<li><a href="dummypage1.html" target="_blank">링크1</a></li>
<li><a href="dummypage2.html">링크2</a></li>
<li><a href="dummypage3.html" target="_self">링크3</a></li>
<li><a href="dummypage4.html" target="_blank">링크4</a></li>
</ul>
<p><a href=:dummypage5.html">링크5</a></p>
JavaScript main.js
// a 요소 모두 가져오기
const aElementList = document.querySelectorAll('a');
// a 요소별 처리
aElementList.forEach((element) => {
// a 태그에 target 속성이 없으면 return
if (element.hasAttribute('target') === false) {
return;
}
// target이 _blank 속성이 아니면 return
if (element.getAttribute('target' !== '_blank') {
return;
}
// rel 속성에 noopener 설정
element.setAttribute('rel', 'noopener');
});
실행결과
<ul>
<li>
<a href="dummypage1.html" target="_blank" rel="noopener">링크1</a>
</li>
<li>
<a href="dummypage2.html">링크2</a>
</li>
<li>
<a href="dummypage3.html" target="_self">링크3</a>
</li>
<li>
<a href="dummypage4.html" target="_blank" rel="noopener">링크4</a>
</li>
</ul>
<p>
<a href=:dummypage5.html">링크5</a>
</p>
개발자 도구에서 HTML 코드를 확인해 보면 _blank가 설정된 a 태그만 noopener가 설정되어 있다.
참조 :
실무에 바로 적용하는 자바스크립트 코드레시피 278
아케다 야스노부, 카노 타케시 지음 / 이춘혁 옮김
'Program > JavaScript' 카테고리의 다른 글
[JavaScript] 자바스크립트에서 요소 클래스 유/무효화하기 (0) | 2022.07.12 |
---|---|
[JavaScript] 자바스크립트에서 요소 클래스 속성 다루기 (0) | 2022.07.12 |
[JavaScript] 자바스크립트에서 요소 속성 다루기 (0) | 2022.07.11 |
[JavaScript] 자바스크립트에서 자신을 포함한 HTML 요소 다루기 (0) | 2022.07.11 |
[JavaScript] 자바스크립트에서 요소 내부 HTML 다루기 (0) | 2022.07.08 |