2016-10-13 8 views
5

पर क्लिक करके एचटीएमएल संवाद तत्व को खारिज करें dialogs बनाने के लिए सामग्री डिज़ाइन लाइट लाइब्रेरी का उपयोग करना, जो अनिवार्य रूप से अंतर्निहित <dialog> तत्व का उपयोग करता है, क्या इसके पृष्ठभूमि पर क्लिक करके संवाद को खारिज करने का कोई तरीका है? (संवाद सामग्री को स्वयं क्लिक करते समय इसे को खारिज कर दिया जाना चाहिए)।बैकड्रॉप

<dialog>Hi</dialog>  
<button>show</button> 

document.querySelector("button").addEventListener("click", 
() => document.querySelector("dialog").showModal()); 

https://jsfiddle.net/fyjbvbqq/

स्क्रीन पर कहीं भी क्लिक करने से जब संवाद तो यह लगता है कि यह निर्धारित करने में पृष्ठभूमि क्लिक किया गया था ... कोई आसान तरीका है की तरह dialog तत्व पर क्लिक करने के लिए मेल खाती है पर दिखाई जाती है वहाँ एक ऐसा करने का तरीका?

उत्तर

2

आप Element.getBoundingClientRect का उपयोग आकार और संवाद और परीक्षण की स्थिति प्राप्त करने के लिए हो सकता है यदि मौजूदा ग्राहक निर्देशांक इस क्षेत्र के अंदर कर रहे हैं:

document.querySelector("button").addEventListener("click",() => document.querySelector("dialog").showModal()); 
 
document.querySelector("dialog").addEventListener("click", (e) => { 
 
    var rect = e.target.getBoundingClientRect(); 
 
    var minX = rect.left + e.target.clientLeft; 
 
    var minY = rect.top + e.target.clientTop; 
 
    if ((e.clientX < minX || e.clientX >= minX + e.target.clientWidth) || 
 
     (e.clientY < minY || e.clientY >= minY + e.target.clientHeight)) { 
 
    e.target.close(); 
 
    } 
 
});
<dialog>Hi</dialog> 
 

 
<button> 
 
    show 
 
</button>

+0

यह बहुत करीब है, लेकिन मुझे लगता है कि मैं इस तर्क के विपरीत चाहते हैं (बैकड्रॉप खारिज पर क्लिक करना; जब मैं अपना स्निपेट चलाता हूं तो मुझे इसे खारिज करने के लिए संवाद को क्लिक करना होगा) –

+0

@ExplosionPills फिक्स्ड। मेरी अंग्रेजी के लिए खेद है, मैं बिल्कुल विपरीत समझा। अब, केवल बाहर क्लिक करके, संवाद विघटित हो जाएगा। – gaetanoM

+0

धन्यवाद! केवल मुद्दा मैं देख रहा हूँ कि सीमांकन बॉक्स सीमा भी मोडल खारिज करने के लिए क्लिक किया जा सकता है, लेकिन यह एक बड़ी बात नहीं है। बस सोच रहा है कि इसे संभालने का कोई आसान तरीका है या नहीं –

संबंधित मुद्दे