2011-04-06 16 views
18

मैं जावास्क्रिप्ट में सीमा और चयन ऑब्जेक्ट के बीच अंतर जानना चाहता था।ब्राउज़र में श्रेणी और चयन के बीच अंतर

ऐसा लगता है कि आप इन दोनों में से किसी एक के समान कार्यक्षमता प्राप्त कर सकते हैं। किस मामले में कोई विशिष्ट परिस्थितियां हैं जहां आप जानते हैं कि इनमें से कौन सा उपयोग करना है? जबकि Range एक दस्तावेज किसी भी दृश्य प्रतिनिधित्व की स्वतंत्र रूप से की एक सतत हिस्से का प्रतिनिधित्व करता

+0

इस तालिका को देखें: http://www.quirksmode.org/dom/range_intro.html#link2। – Blender

उत्तर

26

मौलिक अंतर यह है कि एक Selection उपयोगकर्ता के चयन का प्रतिनिधित्व करता है। एक Selection शून्य (लगभग) शून्य, एक या अधिक Range एस के संदर्भ में व्यक्त किया जा सकता है लेकिन रंगों को चयन के पूरी तरह से स्वतंत्र रूप से स्वतंत्र रूप से बनाया और संशोधित किया जा सकता है।

कार्यक्षमता में कुछ ओवरलैप नहीं है: उदाहरण के लिए, Selection के deleteFromDocument() उसके घटक सीमाओं के सभी पर deleteContents() बुला के बराबर है, और आप anchorNode, anchorOffset का उपयोग कर चयन में सबसे हाल ही में चयनित श्रेणी की सीमाओं प्राप्त कर सकते हैं , focusNode और focusOffset गुण। हालांकि, कुछ महत्वपूर्ण अंतर हैं:

  • Selection में कई श्रेणियां हो सकती हैं। हालांकि, वर्तमान में इसका समर्थन करने वाला एकमात्र प्रमुख ब्राउज़र फ़ायरफ़ॉक्स है।
  • एक Selection "पीछे की ओर" हो सकता है, जिसके द्वारा मेरा मतलब है कि चयन (focusNode और focusOffset द्वारा प्रतिनिधित्व) के अंत सीमा शुरू सीमा (anchorNode और anchorOffset) की तुलना में दस्तावेज़ में पहले हो सकती है। एक रेंज की कोई दिशा नहीं है।
  • toString() अलग-अलग काम करता है। ऑब्जेक्ट पर toString() पर toString() पर कॉल करने पर, toString() पर एक दृश्य पर toString() पर कॉल करते समय, श्रेणी के भीतर सभी टेक्स्ट नोड्स का एक संयोजन वापस लौटाएगा, जिसमें <script> तत्वों सहित, सीएसएस के माध्यम से छिपा तत्व।