दिलचस्प पोस्ट
OnItemClickListener एंड्रॉइड के साथ सूची दृश्य WAMP SMTP लोकलहोस्ट का उपयोग कर मेल भेजें WIN32_Processor :: सभी कंप्यूटरों के लिए प्रोसेसरआईडी अद्वितीय है Google मानचित्र v3 – देखने योग्य क्षेत्र और ज़ूम स्तर सीमित करें कंसोल में क्रोम 'संसाधन लोड करने में विफल' संदेशों को दबाएं चयन बॉक्स पर ट्रिगर क्लिक करें, jQuery में काम नहीं करता जावा – छवि से पिक्सेल सरणी प्राप्त करें HTTP त्रुटि 500.19 – आंतरिक सर्वर त्रुटि एक पैरामीटर लौटते समय आरवीओ को क्यों अस्वीकृत कर दिया जाता है? सी ++ में परिपत्र शिफ्ट (घुमाएगी) संचालन के लिए सर्वोत्तम अभ्यास ऑब्जेक्ट के अंदर सभी सहयोगी / समग्र वस्तुएं प्राप्त करें (सार रास्ते में) जावा: आदिम डेटा प्रकारों का सरणी autobox नहीं करता है जब आप encodeuri / encodeurcomponent के बजाय भागने का उपयोग करना चाहते हैं? जावास्क्रिप्ट में एक इनपुट टेक्स्ट वैल्यू कैसे प्राप्त करें नि: शुल्क DTD XSD रूपांतरण उपयोगिता के लिए?

जावास्क्रिप्ट के साथ चयनित HTML पाठ कैसे प्राप्त करें?

चयनित पाठ पाने के लिए मैं निम्नलिखित कोड का उपयोग कर सकता हूं:

text=window.getSelection(); /// for Firefox text=document.selection.createRange().text; /// for IE

लेकिन मैं चयनित एचटीएमएल कैसे प्राप्त कर सकता हूं, जिसमें टेक्स्ट और एचटीएमएल टैग शामिल हैं?

Solutions Collecting From Web of "जावास्क्रिप्ट के साथ चयनित HTML पाठ कैसे प्राप्त करें?"

आईई <= 10 ब्राउज़र में, यह है:

 document.selection.createRange().htmlText 

@ डेरेनएमबी ने बताया कि IE11 अब इस का समर्थन नहीं करता है। संदर्भ के लिए यह उत्तर देखें।


गैर- IE ब्राउज़र में, मैं सिर्फ इस के साथ खेलने की कोशिश की … यह काम करने लगता है, आधी से नोड्स को तोड़ने और एक अतिरिक्त अवधि बनाने से साइड इफेक्ट होंगे, लेकिन यह एक शुरुआती बिंदु है:

 var range = window.getSelection().getRangeAt(0), content = range.extractContents(), span = document.createElement('SPAN'); span.appendChild(content); var htmlContent = span.innerHTML; range.insertNode(span); alert(htmlContent); 

दुर्भाग्यवश, मैं नोड को वापस नहीं लगा सकता क्योंकि यह था (उदाहरण के लिए क्योंकि आप स्प्रेड से आधा पाठ खींच सकते हैं)।

यहां एक फ़ंक्शन है जो आपको सभी प्रमुख ब्राउज़रों में वर्तमान चयन के अनुरूप HTML प्राप्त करेगा। यह एक चयन के भीतर कई श्रेणियों को भी संभालता है (वर्तमान में केवल फ़ायरफ़ॉक्स में लागू):

 function getSelectionHtml() { var html = ""; if (typeof window.getSelection != "undefined") { var sel = window.getSelection(); if (sel.rangeCount) { var container = document.createElement("div"); for (var i = 0, len = sel.rangeCount; i < len; ++i) { container.appendChild(sel.getRangeAt(i).cloneContents()); } html = container.innerHTML; } } else if (typeof document.selection != "undefined") { if (document.selection.type == "Text") { html = document.selection.createRange().htmlText; } } return html; } alert(getSelectionHtml()); 

यहाँ है जो मैं साथ आया था। IE, क्रोम, फ़ायरफ़ॉक्स, सफारी, ओपेरा के साथ परीक्षण किया गया। खाली स्ट्रिंग नहीं लौटाता है

 function getSelected() { var text = ""; if (window.getSelection && window.getSelection().toString() && $(window.getSelection()).attr('type') != "Caret") { text = window.getSelection(); return text; } else if (document.getSelection && document.getSelection().toString() && $(document.getSelection()).attr('type') != "Caret") { text = document.getSelection(); return text; } else { var selection = document.selection && document.selection.createRange(); if (!(typeof selection === "undefined") && selection.text && selection.text.toString()) { text = selection.text; return text; } } return false; } 

@zyklus:

मैंने काम करने के लिए अपने फ़ंक्शन को संशोधित किया है (मैं jQuery का उपयोग कर रहा हूं लेकिन उन टुकड़ों को आसानी से जावास्क्रिप्ट में फिर से लिखा जा सकता है):

 function getSelectionHtml() { var htmlContent = '' // IE if ($.browser.msie) { htmlContent = document.selection.createRange().htmlText; } else { var range = window.getSelection().getRangeAt(0); var content = range.cloneContents(); $('body').append('<span id="selection_html_placeholder"></span>'); var placeholder = document.getElementById('selection_html_placeholder'); placeholder.appendChild(content); htmlContent = placeholder.innerHTML; $('#selection_html_placeholder').remove(); } return htmlContent; } 

मुझे हाइलाइट प्लगइन सबसे अच्छा मैच मिला, यह बहुत हल्का है और इसके साथ आप सामग्री का हिस्सा उजागर कर सकते हैं:

 $('li').highlight('bla');