Я создаю расширение chrome, которое основывается на извлечении выделенного текста со страницы и последующем его отображении.
Мне нужно скопировать абзац текста, подобный этому:
<span class="padding:0px;>Hello this is a link <a href="/somewhere">somewhere</a></span>
И чтобы вернуть это:
Hello this is a link <a href="/somewhere">somewhere</a>
Т.е. я хочу получить текст, и такие вещи, как ссылки, LI, UL, Blockquote, но не получить скрытый стиль, и т. Д. c.
Функция, которую я использую в настоящее время:
function getSelectionText() {
var text = "";
if (window.getSelection) {
// from here: https://gist.github.com/gleuch/2475825
// selection range
var range = window.getSelection().getRangeAt(0);
// plain text of selected range (if you want it w/o html)
var plaintext = window.getSelection();
// document fragment with html for selection
var fragment = range.cloneContents();
// make new element, insert document fragment, then get innerHTML!
var div = document.createElement('div');
div.appendChild( fragment.cloneNode(true) );
// your document fragment to a string (w/ html)! (yay!)
var text = div.innerHTML;
console.log(text);
} else if (document.selection && document.selection.type != "Control") { // think this is for IE?
text = document.selection.createRange().text;
}
return text;
};
Это захватывает полный фрагмент узла выделения, но иногда захватывает окружающие промежутки, div, стили и т. Д. c.
Есть ли некоторые между? т.е. не просто необработанный текст и не полный HTML?