5

के भीतर से HTML तत्व संतोषजनक है या नहीं, यह जांचने के लिए कि मैं क्रोम एक्सटेंशन लिख रहा हूं, जिस पर contenteditable HTML तत्व (या तत्व जहां उपयोगकर्ता टाइप कर सकते हैं) को उस पृष्ठ पर पहचानने की आवश्यकता है जहां मेरा संदर्भ स्क्रिप्ट है इंजेक्शनक्रोम एक्सटेंशन

मैं वर्तमान में इस कर रहा हूँ:

var objAll = document.getElementsByTagName("*"); 
for(var i = 0; i < objAll.length; i++) 
{ 
    obj = objAll[i]; 

    if(obj.contentEditable && 
     obj.contentEditable != 'inherit' && 
     obj.contentEditable != 'false') 
    { 
     //Yes, this is a content editable element! 
    } 
} 

लेकिन मेरे विधि सभी साइटों है कि मैं इस पर परीक्षण किया में काम करने के लिए प्रतीत नहीं होता।

मुझे उत्सुकता है, मैं वहां क्या खो रहा हूं?

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

+0

आप की तरह 'document.querySelectorAll ('[contenteditable]')' कुछ के साथ एक ही बार में सभी तत्वों को आप चाहते हैं का चयन करने की कोशिश की है? – MaxArt

उत्तर

6

contentEditable एक ऐसी संपत्ति है जो contenteditable विशेषता द्वारा निहित है।

if (obj.isContentEditable) { 
    // do stuff 
} 

लेकिन बजाय सभी तत्वों को मिल रहा है और उन्हें फ़िल्टर की, बस सब contenteditable चयन: क्या तुम सच में जांच करने की आवश्यकता isContentEditable संपत्ति है, जो एक बूलियन बताता है कि तत्व एक संपादन योग्य सामग्री है या नहीं करता है, तो है तत्वों:

var contEditables = document.querySelectorAll('[contenteditable]'); 
for (var i = 0; i < contEditables.length; i++) { 
    // do stuff 
} 

वास्तव में, एक तत्व एक खाली स्ट्रिंग है या नहीं, संपादन योग्य सामग्री यदि और केवल यदि यह एक contenteditable विशेषता है है।

Live demo

+0

धन्यवाद। आप जानते हैं, किसी कारण से 'document.querySelectorAll (' [contenteditable] ')' ऐसा नहीं करता है। केवल तभी जब मैं अपने पास की बजाय 'if (obj.isContentEditable) 'करता हूं, और' document.getElementsByTagName (" * ") 'रखता हूं, यह मेरे विशिष्ट परीक्षण पृष्ठ के लिए काम करता है। कोई विचार क्यों? – c00000fd

+0

@ c00000fd असल में, नहीं। वह क्वेरी चाहिए और [काम करता है] (http://jsfiddle.net/m8jouzpd/), और हालांकि मैंने इसे किसी एक्सटेंशन में परीक्षण नहीं किया है, मुझे नहीं लगता कि इसे अलग तरीके से क्यों व्यवहार करना चाहिए। – MaxArt

+0

डेमो के लिए धन्यवाद। मैं देख सकता हु। लेकिन मैं इसे एक लाइव पेज (क्रोम एक्सटेंशन से) में एक और अधिक जटिल उदाहरण के साथ परीक्षण कर रहा हूं और मैंने ऊपर जो कहा है ** ** कोई फर्क पड़ता है। और अगर कोई समझा सकता है तो मैं सराहना करता हूं क्यों? – c00000fd