2010-02-06 12 views
16

मैं सामग्री संपादन योग्य डीआईवी के लिए स्वत: पूर्ण लिख रहा हूं (टेक्स्ट बॉक्स में एचटीएमएल सामग्री प्रस्तुत करने की आवश्यकता है। इसलिए टेक्स्टटेरा पर सामग्री योग्य डीवी का उपयोग करना पसंद किया जाता है)। अब जब मुझे एक कुंजीपटल/कीडाउन/डीआईवी में ईवेंट पर क्लिक करें तो कर्सर की स्थिति ढूंढनी होगी। ताकि मैं उस स्थिति में एचटीएमएल/पाठ डाल सकूं। मैं अनजान हूं कि मैं इसे कुछ गणना द्वारा कैसे पा सकता हूं या क्या मूल ब्राउज़र कार्यक्षमता है जो मुझे संतुष्ट डीआईवी में कर्सर की स्थिति खोजने में मदद करेगी।एक संतोषजनक डीआईवी में कर्सर की स्थिति कैसे खोजें?

+2

कर्सर की स्थिति या कैरेट की स्थिति? तो वास्तव में आपको निर्देशांक द्वारा कैरेट स्थिति खोजने की आवश्यकता है? –

उत्तर

31

यदि आप कर्सर पर कुछ सामग्री डालना चाहते हैं, तो इसकी स्थिति स्पष्ट रूप से खोजने की आवश्यकता नहीं है। निम्नलिखित समारोह सभी मुख्यधारा डेस्कटॉप ब्राउज़र में एक डोम नोड कर्सर स्थिति पर (तत्व या पाठ नोड) से जोड़ दिया जाएगा:

function insertNodeAtCursor(node) { 
    var range, html; 
    if (window.getSelection && window.getSelection().getRangeAt) { 
     range = window.getSelection().getRangeAt(0); 
     range.insertNode(node); 
    } else if (document.selection && document.selection.createRange) { 
     range = document.selection.createRange(); 
     html = (node.nodeType == 3) ? node.data : node.outerHTML; 
     range.pasteHTML(html); 
    } 
} 

आप बल्कि एक HTML स्ट्रिंग डालने चाहते हैं:

function insertHtmlAtCursor(html) { 
    var range, node; 
    if (window.getSelection && window.getSelection().getRangeAt) { 
     range = window.getSelection().getRangeAt(0); 
     node = range.createContextualFragment(html); 
     range.insertNode(node); 
    } else if (document.selection && document.selection.createRange) { 
     document.selection.createRange().pasteHTML(html); 
    } 
} 

अद्यतन

ओपी की टिप्पणी के बाद, मैं अपने खुद के Rangy पुस्तकालय, जो आईई को TextRange उद्देश्य यह है कि एक डोम रेंज की तरह बर्ताव एक आवरण कहते हैं का उपयोग करें। एक DOM Range में प्रारंभ और अंत सीमा होती है, जिनमें से प्रत्येक नोड के संदर्भ में और उस नोड के भीतर ऑफसेट के रूप में व्यक्त की जाती है, और रेंज में हेरफेर करने के तरीकों का एक समूह होता है। MDC article कुछ परिचय प्रदान करना चाहिए।

+1

@Tim, आपकी प्रतिक्रिया के लिए धन्यवाद। यह तब काम करता है जब मुझे वर्तमान कर्सर स्थिति में डालने की आवश्यकता होती है। शायद मैं जो कहना चाहता था वह कर्सर को किसी विशेष स्थिति में सेट करने और वहां डालने में सक्षम होना है। मान लें कि मैं वर्तमान कर्सर की स्थिति जानता हूं और कुछ स्थितियों को पीछे हटाना चाहता हूं और जब मैं स्वत: पूर्ण ड्रॉपडाउन से क्लिक करता हूं तो HTML डालने के लिए चाहता हूं। (क्या मैं एक स्थिति खोजने और डीओएम में डालने के बारे में बात कर रहा हूं?) –

+0

ठीक है, मैंने अपना जवाब अपडेट कर लिया है। –

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