दिलचस्प पोस्ट
डीएलएल से एक सी + + क्लास निर्यात करना मैं Android एप्लिकेशन के लिए IntelliJ IDEA को कैसे सेट अप कर सकता हूँ? संदर्भ से जावास्क्रिप्ट पारित करता है? java: (स्ट्रिंग ) List.toArray () ClassCastException प्रदान करता है फ़ील्ड नाम के आसपास बैकट्क्स का उपयोग करना ओएसएक्स पर .so और .dialib के बीच अंतर क्या हैं? जावा: एक सरणी में एक फाइल पढ़ना बूटस्ट्रैप 3 ग्लाइफ़िकॉन काम नहीं कर रहे हैं पुनरावर्ती या परिवर्तन? सेटक्यूकी () के तुरंत बाद $ _COOKIE एक्सेस करना Ggplot2 द्वारा उत्पन्न भूखंड के नीचे पाठ प्रदर्शित करना 1-अनुक्रमित प्रोग्रामिंग भाषाओं की सूची? नवीनतम एंड्रॉइड सपोर्ट लाइब्रेरी के साथ पीछे के संगत वेक्टर ड्रॉएबल का सही उपयोग कैसे करें? जावा: मैं कोड की संपूर्ण निर्देशिका संरचना कैसे संकलित कर सकता हूं? सिंक में विकास रखने के लिए जीआईटी-बंडल का उपयोग कैसे करें?

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

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

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

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

वेब के समाधान से एकत्रित समाधान "जावास्क्रिप्ट के साथ चयनित 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');