2010-06-02 13 views
9

विशिष्ट एचटीएमएल पाठ का चयन करने के लिए मेरे previous question से, मैं HTML स्ट्रिंग में सीमा को समझने के लिए this link से गुजर चुका हूं।एचटीएमएल - चयन रेंज - श्रेणी प्राप्त करना + नोड शुरू करना + समापन नोड + दूरी

एचटीएमएल पेज पर एक विशिष्ट पाठ का चयन करने के लिए। हमें इन चरणों का पालन करने की जरूरत है।

ग्रहण HTML:

<h4 id="entry1196"><a 
    href="http://radar.oreilly.com/archives/2007/03/call_for_a_blog_1.html" 
    class="external">Call for a Blogger's Code of Conduct</a></h4> 

<p>Tim O'Reilly calls for a Blogger Code of Conduct. His proposals are:</p> 

<ol> 
    <li>Take responsibility not just for your own words, but for the 
     comments you allow on your blog.</li> 
    <li>Label your tolerance level for abusive comments.</li> 
    <li>Consider eliminating anonymous comments.</li> 
</ol> 

जावा स्क्रिप्ट मैं की विपरीत रास्ते में ऐसा करना चाहते हैं रेंज

var range = document.createRange(); // create range 
var startPar = [the p node];   // starting parameter 
var endLi = [the second li node]; // ending parameter 
range.setStart(startPar,13);   // distance from starting parameter. 
range.setEnd(endLi,17);    // distance from ending parameter 
range.select();      // this statement will make selection 

से चयन करने के लिए। मेरा मतलब है, मान लें कि चयन ब्राउज़र (सफारी) पर उपयोगकर्ता द्वारा किया जाता है। मेरा सवाल यह है कि हम कैसे नोड शुरू कर सकते हैं (जैसा कि हमारे पास 'पी नोड' है) और नोड को समाप्त करना (जैसा कि हमारे पास 'दूसरा ली नोड' है) और सीमा भी है (जैसा कि हमारे पास 13,17 है) ?

संपादित करें: मेरे प्रयासों (this question से)

var sel = window.getSelection(); 

    if (sel.rangeCount < 1) { 
     return; 
    } 
    var range = sel.getRangeAt(0); 
    var startNode = range.startContainer, endNode = range.endContainer; 

    // Split the start and end container text nodes, if necessary 
    if (endNode.nodeType == 3) { 
     endNode.splitText(range.endOffset); 
     range.setEnd(endNode, endNode.length); 
    } 

    if (startNode.nodeType == 3) { 
     startNode = startNode.splitText(range.startOffset); 
     range.setStart(startNode, 0); 
    } 

लेकिन, फिर भी मैं की तरह हो रही है, यदि चयनित के बारे में उलझन में हूँ पहले पैराग्राफ या दूसरे या तीसरे, या चयनित है पहले शीर्षक या दूसरे शीर्षक या क्या है ....

+0

क्या आप स्पष्ट कर सकते हैं कि आप वास्तव में क्या हासिल करना चाहते हैं? –

+0

@ टिम डाउन - मुझे समझाएं। उपयोगकर्ता एक बटन पर चयन और टैप बनाता है। मुझे उस श्रेणी को स्टोर करने की आवश्यकता है जिसे उपयोगकर्ता ने चुना है। –

उत्तर

6

चयनित सीमा संग्रह करना सरल है। निम्नलिखित केवल पहले चयनित श्रेणी वापस आ जाएगी (फ़ायरफ़ॉक्स कम से कम एकाधिक चयन का समर्थन करता है):

<script type="text/javascript"> 

function getSelectionRange() { 
    var sel; 
    if (window.getSelection) { 
     sel = window.getSelection(); 
     if (sel.rangeCount) { 
      return sel.getRangeAt(0); 
     } 
    } else if (document.selection) { 
     return document.selection.createRange(); 
    } 
    return null; 
} 

var range; 

</script> 
<input type="button" onclick="range = getSelectionRange();" 
    value="Store selection"> 

range गुण startContainer (नोड रेंज की शुरुआत से युक्त), startOffset होगा (एक शुरुआत कंटेनर नोड के भीतर ऑफसेट : पाठ नोड्स और तत्वों में बाल ऑफसेट के मामले में एक चरित्र ऑफ़सेट), endContainer और endOffset (प्रारंभ गुणों के बराबर व्यवहार)। Range अच्छी तरह से its specification और MDC द्वारा प्रलेखित है।

आईई में, range में TextRange होगा, जो बहुत अलग तरीके से काम करता है। नोड्स और ऑफसेट्स की बजाय, टेक्स्टरेंज अक्षरों, शब्दों और वाक्यों से चिंतित हैं। माइक्रोसॉफ्ट की साइट में कुछ दस्तावेज हैं: http://msdn.microsoft.com/en-us/library/ms533042%28VS.85%29.aspx, http://msdn.microsoft.com/en-us/library/ms535872%28VS.85%29.aspx

+0

लेकिन रेंज जावास्क्रिप्ट प्रकार का चर है। मैं उद्देश्य सी का उपयोग कर फ़ाइल में कैसे लिख सकता हूं। मुझे पता है कि यह एक नया सवाल है। मैं यह पूछ रहा हूँ। –

+0

आप अपनी जावास्क्रिप्ट को उद्देश्य-सी से बात करने का प्रस्ताव कैसे दे रहे हैं? मुझे लगता है कि यह एक आईफोन/आईपैड प्रोजेक्ट है जिसके बारे में हम कह रहे हैं, तो आप केवल मोबाइल सफारी में दिलचस्पी रखते हैं? –

+0

हां बिल्कुल - मैं एक आईफोन एप्लिकेशन विकसित कर रहा हूं। अब, मैं एक और परेशानी में हूं कि आईफोन एप्लिकेशन में जावा वैरिएबल को कैसे स्टोर किया जाए। –

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