2011-12-17 9 views
5

मैं एक साधारण RichText-Editor बनाने के लिए contenteditable div पर काम कर रहा हूं। मेरे पास एक आवश्यकता है बटन बटन पर कर्सर पोस्टियन पर एचटीएमएल खंड डालने में सक्षम होना है।क्या एक 'range.insertNode` को कंटेंट किए गए div में ब्राउज़र के पूर्ववत का उपयोग करके पूर्ववत किया जा सकता है?

मैं ब्राउज़र पर आधारित range, selection, range.insertNode(nodeHTML) या range.pasteHTML(nodeHTML) का उपयोग कर उस काम को ठीक करने में सक्षम था। लेकिन मुझे दो चीजें नहीं मिल सका, जो आदर्श रूप से मैं

  1. ब्राउज़र के पूर्ववत का उपयोग करके डाले गए नोड को पूर्ववत करने में सक्षम होना चाहता हूं। किसी भी तरह, ब्राउज़र कार्यों के ऊपर अनदेखा करता है।
  2. कर्सर को सम्मिलित नोड के अंत में ले जाने के लिए। ताकि उपयोगकर्ता

मुझे पता है कि मैं कई संपादकों में से कुछ का उपयोग कर सकता हूं, जो यह बहुत अच्छा करता है, लेकिन अगर मुझे यह मिलता है तो मुझे यह नहीं करना पड़ेगा। किसी भी मदद या सुझाव भी स्वागत है।

धन्यवाद।

+0

यह आपकी मदद कर सकता है: http://code.google.com/p/rangy/ - इसके अलावा, डेमो पर एक नज़र डालें। – techfoobar

+0

दुर्भाग्य से रंगी की पूर्ववत कार्यक्षमता नहीं है। –

उत्तर

8

उत्तर, पुनः अगस्त 2013

दुर्भाग्य से नहीं हालांकि चीजों में सुधार कर रहे हैं। document.execCommand() द्वारा ट्रिगर किए गए प्रोग्राम के अलावा प्रोग्रामेटिक डोम उत्परिवर्तन ब्राउज़र के अंतर्निहित पूर्ववत स्टैक पर न जाएं। नई ms-beginUndoUnit और ms-endUndoUnit आदेशों

  • IE 11 है
  • है पूर्ववत वेब डेवलपर्स, जो के कुछ हिस्सों WebKit में लागू किया गया है के लिए उपलब्ध ढेर के लिए कार्य करने का एक spec: लेकिन, इसमें दो हाल के घटनाक्रमों किया गया है और फ़ायरफ़ॉक्स (नोट: it's disabled by default in Firefox और स्पष्ट रूप से वेबकिट में भी)।

स्थिति में सुधार होने तक, आप document.execCommand("InsertHTML", false, "<b>Some html</b>"); का उपयोग कर सकते हैं लेकिन यह IE में समर्थित नहीं है।

+0

मुझे लगता है कि IE उपयोगकर्ताओं को पूर्ववत किए बिना करना है। 'InsertHTML' का उपयोग करना मेरे दोनों मुद्दों का समाधान है। धन्यवाद। और बीटीडब्ल्यू, आपकी रेंज प्रभावशाली है। – simplyharsh

+1

ऐसा लगता है कि माइक्रोसॉफ्ट इस मुद्दे के बारे में कुछ करने वाला पहला व्यक्ति हो सकता है; आईई 11 में कमांड * ms-startUndoUnit * और * ms-endUndoUnit * है जो दो का उपयोग करने के बीच होने वाले किसी भी डोम परिवर्तन को इकट्ठा करता है, जो उन्हें पूर्ववत चरण के रूप में पूर्ववत स्टैक पर दबाता है। –

+1

@ एंडीई: ओओ, मुझे इसके बारे में पता नहीं था। अच्छी खबर, हालांकि मैं चाहता हूं कि वे spec लागू किया होगा। –

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