Ich habe eine Cross-Browser-Bereich und Auswahlbibliothek namens Rangy entwickelt. Ihr Kern ist dem Konzept von IERange nicht unähnlich, geht aber bei der Implementierung der DOM Level 2 Range- und HTML5-Auswahlspezifikationen sowie hinsichtlich der Stabilität und der Problemumgehung für Browser-Bugs darüber hinaus. Ich denke, es ist das Beste, was es da draußen gibt.
Es gibt auch zusätzliche Module zum Speichern, Wiederherstellen und Serialisieren von Auswahlen und Anwenden der CSS-Klasse auf Bereiche und Auswahlen.
https://github.com/timdown/rangy
Im Folgenden verwendet einige Rangy Erweiterungen Bereiche auf einfache Weise innerhalb eines Auswahltextknoten durchlaufen und umgeben jeden:
function surroundSelectedText(templateElement){
var range, sel = rangy.getSelection();
var ranges = sel.getAllRanges();
var textNodes, textNode, el, i, len, j, jLen;
for (i = 0, len = ranges.length; i < len; ++i) {
range = ranges[i];
// If one or both of the range boundaries falls in the middle
// of a text node, the following line splits the text node at the
// boundary
range.splitBoundaries();
// The first parameter below is an array of valid nodeTypes
// (in this case, text nodes only)
textNodes = range.getNodes([3]);
for (j = 0, jLen = textNodes.length; j < jLen; ++j) {
textNode = textNodes[j];
el = templateElement.cloneNode(false);
textNode.parentNode.insertBefore(el, textNode);
el.appendChild(textNode);
}
}
}
var span = document.createElement("span");
span.style.color = "green";
span.style.fontWeight = "bold";
surroundSelectedText(span);
Beide Ihrer Links 'http: //plugins.jquery. com/project/wrapSelection und http: // perplexed.co.uk/1020_text_selector_jquery_plugin.htm funktioniert nicht mehr. Können Sie sie aktualisieren? – John
aktualisieren Sie Ihre Links, bitte – Anthony