2016-04-25 6 views
9

मैं पॉलिमर 1.0 का उपयोग कर रहा हूं और जब क्रोम में एक बटन पर क्लिक होता है तो MouseEvent उत्पन्न होता है। यह MouseEvent ऑब्जेक्ट में path संपत्ति है जो क्लिक किए गए बटन पर मूल तत्वों का ऑर्डर किया गया सरणी है। फ़ायरफ़ॉक्स में & सफारी, हालांकि, click उत्पन्न हुआ है जिसमें path संपत्ति नहीं है। क्या click ऑब्जेक्ट की समतुल्य संपत्ति है जो मुझे एक ही जानकारी देता है?MouseEvent.path फ़ायरफ़ॉक्स और सफारी में समतुल्य

उत्तर

24

यह उपलब्ध नहीं है, लेकिन अगर तुम सच में इस संपत्ति करना चाहते हैं, तो आप तो जैसे इवेंट वस्तु की मूल प्रोटोटाइप का विस्तार कर सकते हैं:

if (!("path" in Event.prototype)) 
Object.defineProperty(Event.prototype, "path", { 
    get: function() { 
    var path = []; 
    var currentElem = this.target; 
    while (currentElem) { 
     path.push(currentElem); 
     currentElem = currentElem.parentElement; 
    } 
    if (path.indexOf(window) === -1 && path.indexOf(document) === -1) 
     path.push(document); 
    if (path.indexOf(window) === -1) 
     path.push(window); 
    return path; 
    } 
}); 

लेकिन अगर मैं तुम्हें थे, मैं नहीं होगा प्रोटोटाइप का विस्तार करें - मैं इसके बजाय उपरोक्त वर्णित एक फ़ंक्शन बनाउंगा।

यदि आप केवल उन प्रकार की घटनाओं को कवर करना चाहते हैं तो मैं Event.prototype को MouseEvent.prototype में बदल दूंगा।

+0

Awesomesauce। वास्तव में वह जवाब नहीं जिसे मैं ढूंढ रहा था, लेकिन मेरी समस्या पूरी तरह हल करती है। – wogsland

+0

जिज्ञासा से बाहर, @wogsland, क्या जवाब, या उत्तर का प्रकार, क्या आप उम्मीद कर रहे थे? –

+3

मैंने सोचा था कि फ़ायरफ़ॉक्स में बनाए गए ऑब्जेक्ट में समकक्ष संपत्ति होगी जिसका नाम मैंने अभी तक अनुमानित नहीं किया था। – wogsland

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