यहां मैं यह पूरा करने की कोशिश कर रहा हूं: जब कोई उपयोगकर्ता "myDiv" के अंदर टेक्स्ट का चयन करने के लिए माउस, कीबोर्ड या स्पर्श का उपयोग करता है, तो मैं HTML के तीन बुद्धिमान भाग प्राप्त करना चाहता हूं: चयन से पहले HTML ("बाएं" इसका), चयन के अंदर HTML, और चयन के बाद HTML (इसके "दाएं" तक)। एचटीएमएल होना चाहिए क्योंकि यह myDiv.innerHTML के साथ दिखाई देगा।एचटीएमएल को पहले, अंदर, और चयन के बाद कैसे प्राप्त करें (textarea में नहीं)?
चयन टैग जोड़ी के अंदर शुरू या समाप्त हो सकता है (यानी, पृथक चयन आवश्यक HTML नहीं है)। मुझे चयन के भीतर पूर्ण-स्थित तत्वों जैसे विशेष परिदृश्यों से निपटने की आवश्यकता नहीं है; जिन सभी चयनों से मैं चिंतित हूं, उन्हें एक div में बाध्य किया जाएगा जिसमें मजबूत, एम, उल, ओएल, एच 1, छवि और तालिका जैसे मूल टैग होंगे।
चयन का स्नैग करने के लिए मैं निकटतम rangy का उपयोग कर रहा हूं और चयन HTML प्राप्त करने के लिए selection.getRangeAt(0).cloneContents()
पर कॉल कर रहा हूं। यह तब तक पर्याप्त काम करता है जब तक कि मैं अलगाव में अमान्य न हो, और ब्राउज़र इसे वैध मार्कअप बनाने के लिए दस्तावेज़ खंड के HTML को बदल देता है।
अतिरिक्त जानकारी: यहां कारण बताया गया है कि मैं इस की जरूरत है:
मैं एक दस्तावेज़ राय प्रणाली बनाने रहा हूँ, तो मैं बाद में पुनः प्राप्ति और पुनर्गठन के लिए एक डेटाबेस के लिए चयन जानकारी को बचाने के लिए की जरूरत है। आम तौर पर मैं डीओएम पथ और चयनित पाठ का उपयोग करके चयन को सहेज लेगा, लेकिन टेक्स्ट सहेजने और पुनर्गठन के बीच बदल सकता है। उदाहरण के लिए, लेखक पूरे पैराग्राफ को चारों ओर ले जा सकते हैं, अनुभागों को हटा सकते हैं, आदि। डीओएम पथ तब बेकार हो जाता है।
तो मेरी (अपूर्ण) योजना चयन को [ऑफ़सेट, लंबाई, html_snippet] के रूप में संग्रहीत करना है। वह "स्थिति" है। मैं एचटीएमएल स्निपेट भी स्टोर करूंगा जो चयनित पाठ से पहले और बाद में सीधे आए थे। यह "संदर्भ" है।
इन आंकड़ों के संयोजन का उपयोग करके मुझे मूल रूप से चयनित पाठ को अधिकांश समय स्थानांतरित करने में सक्षम होना चाहिए, भले ही यह स्थानांतरित हो या आंशिक रूप से बदल जाए। जब यह विफल हो जाता है, तो यूआई के पास इसका समाधान करने का एक तरीका होगा, लेकिन मैं इसे जितनी बार संभव हो उतनी बार घटित करना चाहता हूं।
सुपरथैंक! कैसे है कि एचटीएमएल एचटीएमएल चयन या viceversa करने के लिए पिछले की तुलना में किसी भी अलग होगा -
1.- जब आप कहते हैं कि 'चयन के बाद html':
यह एक बहुत छोटा पाठ है। –
हाँ, मैं जितना संभव हो उतना जानकारी प्रदान करने की कोशिश कर रहा था, और इसके बजाय मैं अप्रिय रूप से वर्बोज़ था। अभी मैं थोड़ा सा नीचे झुका हुआ। :) –
बस स्पष्ट होने के लिए: क्या HTML स्निपेट्स को आपको ब्राउज़र पर भेजे गए HTML स्रोत में बिल्कुल ठीक होने की आवश्यकता है? –