2011-08-04 26 views
11

तो मेरे पास एक div है जिसमें टेक्स्ट का एक ब्लॉक है, पहले उपयोगकर्ता ने इस ब्लॉक में कुछ टेक्स्ट चुना है और मैंने इस चयन से एक रेंज ऑब्जेक्ट बनाया है। मैंने चयनित पाठ के शुरुआती और समापन बिंदुओं के ऑफसेट को संग्रहीत किया है, लेकिन मुझे रेंज को फिर से बनाने में समस्याएं आ रही हैं (इसलिए मैं इसे कुशल बना सकता हूं)। "उद्धरण" वह div है जिसमें सभी पाठ होते हैं। मैं नहीं जानता कि मैं क्या गलत कर रहा हूं।जब मैं केवल चरित्र ऑफ़सेट जानता हूं तो मैं एक रेंज ऑब्जेक्ट कैसे बना सकता हूं?

 


    var theRange = rangy.createRange(); 
    var node = $('.quotables').html(); 
    theRange.setStart(node, 14); 
    theRange.setEnd(node, 318); 

 

लेकिन मैं हो रही त्रुटियों रखें: Uncaught त्रुटि: NOT_FOUND_ERR: डोम अपवाद 8
m.setStart
(अनाम समारोह)
d.extend._Deferred.f.resolveWith
ddextend.ready
dcaddEventListener.y

+1

क्या तुमने कभी इस समस्या का एक अच्छा समाधान बाहर निकालने था: इस प्रकार आप प्रोग्राम रेंज बनाएंगे? मैं टेक्स्ट नोड्स के माध्यम से दोबारा शुरू करने और पात्रों की गिनती करने की कोशिश कर रहा हूं, मुझे लगता है कि मैं लगभग वहां हूं ... –

उत्तर

15

एक श्रेणी सीमा एचटीएमएल के एक स्ट्रिंग प्रतिनिधित्व के भीतर एक चरित्र ऑफसेट नहीं है। इसके बजाय, यह एक डोम नोड के भीतर एक ऑफसेट है। यदि नोड एक पाठ नोड है, उदाहरण के लिए, सीमा को नोड के पाठ के भीतर एक चरित्र ऑफसेट के रूप में व्यक्त किया जाता है। यदि नोड एक तत्व है, तो यह सीमा से पहले नोड के बाल नोड्स की संख्या के रूप में व्यक्त किया जाता है। उदाहरण के लिए, निम्न HTML, एक रेंज जिसका सीमाओं | से चिह्नित हैं साथ में:

<div id="test">foo|bar<br>|<br></div> 

... रेंज की आरंभ सीमा पाठ नोड कि <div> तत्व का पहला बच्चा है में 3 ऑफसेट पर, निहित है जबकि अंतिम सीमा <div> के भीतर ऑफसेट 2 पर स्थित है, क्योंकि सीमा से पहले झूठ बोलने वाले दो बच्चे नोड्स (टेक्स्ट नोड "फूबर" और एक <br> तत्व) हैं।

var range = rangy.createRange(); // document.createRange() if not using Rangy 
var div = document.getElementById("test"); 
range.setStart(div.firstChild, 3); 
range.setEnd(div, 2); 
+0

क्या प्रोग्रामेटिक रूप से "आंकड़ा" करने का कोई तरीका है जो नोड्स और रिश्तेदार ऑफसेट को शुरू करने और समाप्त करने की आवश्यकता होगी पाठ के एक स्ट्रिंग प्रतिनिधित्व के भीतर चरित्र ऑफसेट? –

+0

@ माइक टर्ले: यह उत्तर मदद कर सकता है: http://stackoverflow.com/a/5596688/96100 –

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

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