Estoy tratando de solucionar el problema que aparece en varios cuadros de diálogo, donde al presionar la tecla fn, el cuadro de diálogo aparece para obtener información del usuario. Cada vez que presiono la tecla fn, el cuadro de diálogo aparece incluso cuando uno de los mismos cuadros de diálogo ya está abierto. Entonces el usuario debe presionar cancelar varias veces para cerrar este cuadro de diálogo. Por lo tanto, debo evitar que aparezca este cuadro de diálogo múltiple cuando ya está abierto. La condición para abrir el cuadro de diálogo está escrita en Js
No ha descrito el cuadro de diálogo específico que usa, así que creé uno de muestra y mostré la solución. Lo que debe hacer para implementar un patrón de diseño singleton, y aquí hay un código de muestra que escribí en codepen. JS:
class singleModal{ static isOpen=false; static id='dialog'; static openModal(){ if(!singleModal.isOpen) { console.log("modal opened!") singleModal.isOpen = true; document.getElementById(singleModal.id).style.display='block'; } } static closeModal(){ if(singleModal.isOpen) { console.log("modal closed!") singleModal.isOpen = false; document.getElementById(singleModal.id).style.display='none'; } } } singleModal.id = 'myDialog'; function openModal(){ singleModal.openModal(); } function closeModal(){ singleModal.closeModal(); }HTML:
<div class="dialog" id="myDialog"> Dialog </div> <button onclick="openModal()">open</button> <button onclick="closeModal()">close</button>