DOM Range spec पर एक नज़र डालें। आप का उपयोग कर फ़ायरफ़ॉक्स में उपयोगकर्ता चयन से एक Range
प्राप्त कर सकते हैं:
var range = window.getSelection().getRangeAt(0);
ध्यान दें कि Firefox सहित कुछ ब्राउज़रों,, एकाधिक चयन, चयन के getRangeAt()
विधि के माध्यम से पहुँचा जा सकता है जो अनुमति देते हैं।
Range
उन नोड्स के भीतर डोम नोड्स और ऑफ़सेट के संदर्भ में व्यक्त किया गया है। एक बार जब आप अपना Range
प्राप्त कर लेते हैं, तो आप जो भी चाहते हैं उसे ठीक करने के लिए सीधा नहीं है, क्योंकि सीमा की सीमाएं डोम पेड़ के विभिन्न स्तरों पर अलग-अलग नोड्स में हो सकती हैं, इसलिए टैग के साथ रेंज की सामग्री के आस-पास बस हमेशा संभव नहीं होता है। तुम्हें पता है, निम्नलिखित की तरह कुछ करने के लिए सक्षम हो सकता है, हालांकि यह एक नया ब्लॉक तत्व चयनित सामग्री को रोकने के लिए पैदा करेगा: (
var range = window.getSelection().getRangeAt(0);
var selectionContents = range.extractContents();
var div = document.createElement("div");
div.style.color = "yellow";
div.appendChild(selectionContents);
range.insertNode(div);
एक और, hacky, वैकल्पिक चयन को संशोधित करने के document
की execCommand()
विधि का उपयोग करने के लिए है उदाहरण के लिए इसे किसी विशेष रंग में सेट करके) और फिर उस रंग के तत्वों का चयन करने के लिए document.querySelectorAll
या कुछ चयनकर्ता लाइब्रेरी का उपयोग करके और फिर स्टाइल लागू करें।
स्रोत
2010-01-26 13:58:12
अरे बॉब Fanger यू यू है यू सिर्फ मुझे बता सकते हैं है.अगर के लिए किसी भी समाधान मिला। – Warrior
नहीं, हमने TinyMCE पर स्विच किया, जिसने (व्यवसाय) समस्या हल की। पुनश्च। TinyMCE के पास अपने एचटीएमएलडिटर को विस्तारित करने के लिए एक महान एपीआई है। आप http://wiki.moxiecode.com/index.php/TinyMCE:API/tinymce.Editor/selection –
के कार्यान्वयन की जांच कर सकते हैं, मेरा सुझाव है कि आप कुछ (अच्छी तरह से विकसित) WYSIWYG htmleditor - tinymce पर एक नज़र डालें उदाहरण - इसे समझने के लिए। :) –