html5 요소를 닫기 위해 html5 요소를 닫기위한 해결책이나 해결 방법을 발견하지 못했습니다. (배경 : : 배경) 분명히 기본이지만 기능.새로운 HTML <dialog> 태그를 클릭하여 닫는 방법 :: 배경
12
A
답변
14
대화 상자 경계 사각형을 사용하여 배경 클릭을 감지 할 수 있습니다.
var dialog = document.getElementByTagName('dialog');
dialog.showModal();
dialog.addEventListener('click', function (event) {
var rect = dialog.getBoundingClientRect();
var isInDialog=(rect.top <= event.clientY && event.clientY <= rect.top + rect.height
&& rect.left <= event.clientX && event.clientX <= rect.left + rect.width);
if (!isInDialog) {
dialog.close();
}
});
4
또 다른 더 효율적인 솔루션은 padding: 0
와 div
에서 dialog
-content을 래핑하는 것입니다. 이 방법을 사용하면 클릭 이벤트의 event.target
을 확인할 수 있습니다.이 이벤트는 배경의 경우 대화 상자를 참조하고 실제 모달 인 경우 div
의 다른 요소를 참조합니다.
실제 크기를 확인하지 않으면 레이아웃주기를 방지 할 수 있습니다.
const popup = document.getElementById('popup');
const popupDialog = document.getElementById('popup-dialog');
popup.addEventListener('click', function(e){
console.info(e.target.tagName);
if (e.target.tagName === 'DIALOG') popupDialog.close()
});
<div id="popup" style="padding: 0">
<dialog id="popup-dialog" style="display:none;">
<h4>Dialog Title</h4>
<footer class="modal-footer">
<button id="popup-close" type="button">close</button>
<button id="popup-ok" type="button">ok</button>
</footer>
</dialog>
</div>
0
, 여기에 나는 그것이 계산) (getBoundingClientRect 작업 요소를 캡슐화하기를 사용하지 않도록 해결 방법은
관련 문제
- 1. JavaScript에서 html 태그를 닫는 방법?
- 2. <img> 태그를 올바르게 닫는 방법?
- 3. div를 외부에서 클릭하여 닫는 방법
- 4. 모바일 브라우저에서 클릭하여 드롭 다운을 닫는 방법
- 5. Firefox가 null html 태그를 닫는 이유는 무엇입니까?
- 6. 닫지 않은 HTML 태그를 찾아서 닫는 정규식
- 7. <i> 태그를 클릭하여 각도로 표시
- 8. 몸체를 클릭하여 사이드 바를 닫는 방법
- 9. 두 번 클릭하여 WebView를 닫는 방법?
- 10. PHP를 사용하여 주석의 태그를 닫는 방법
- 11. 닫는 태그를 누락 클래스
- 12. 닫는 태그를 무시하는 XPath
- 13. 는 닫는 태그를 포함하는
- 14. XMLStarles가 닫는 태그를 제거합니다
- 15. 클릭하여 창을 닫는 방법은 무엇입니까?
- 16. Notepad ++ 동시에 열고 닫는 html 태그를 편집하는 플러그인
- 17. XHTML 닫는 태그를 메모장에서 자동으로 변경하는 방법 ++
- 18. PHPStorm의 ZenCoding : XML 태그를 자동으로 닫는 방법?
- 19. HTML 태그를 읽는 방법
- 20. HTML 태그를 없애는 방법
- 21. PHP Tidy가 닫는</head> 태그를 잘못 제거했습니다
- 22. 라이트 박스 및 배경 오버레이를 닫는 방법?
- 23. <img> 태그를 HTML 페이지에
- 24. 변환 된 HTML 태그를 실제 HTML 컨텐트로 변환하는 방법
- 25. 자바 스크립트는 닫는 <a> 태그를 제거합니까?
- 26. 닫는 html 태그를 Textmate를 사용하여 PHP에서 중첩 시키십시오.
- 27. Jsoup의 HTML 파서가 단일 태그를 자동 닫는 태그로 변환하지 못하도록
- 28. 넷빈즈 잘못 강조 HTML 오프닝/PHP 스크립트에 태그를 닫는
- 29. XML 태그를 유지하지만 HTML 태그를 제거하는 방법
- 30. 태그를 HTML 엔티티로 변환
멋진 아이디어! 잘 작동합니다. – mantramantramantra
'event.target'이'dialog' 인지도 확인해야했습니다. EG'if (! isInDialog && event.target.tagName === 'DIALOG')'. 폼이 'enter'를 통해 대화 상자 내에서 제출되면 클릭 이벤트 이벤트가 제출 버튼에서 튀어 나와 어떤 이유로 인해 clientX와 clientY가 0이됩니다. – kmurph79