Ersetzen Sie einen textNode mit HTML-Text in Javascript?
Lesezeit: 3 Minuten
Jippers
Ich wurde zum Linkify-Projekt auf GitHub weitergeleitet (https://github.com/cowboy/javascript-linkify) zum Finden und “Verlinken” von URLs und Domains, die einfach im Text schweben.
Es ist toll! Es funktioniert total auf Text!
Allerdings bin ich mir nicht ganz sicher, wie ich es bei a zum Laufen bringen soll textNode die den Text enthält, den ich verlinken möchte.
Ich verstehe die textNode hat nur textContent seit … es ist alles Text. Da diese Linkify-Funktion HTML als Text zurückgibt, gibt es eine Möglichkeit, einen textNode zu nehmen und den darin enthaltenen HTML-Code mit der Linkify-Ausgabe “umzuschreiben”?
function repl(node) {
var nodes = node.childNodes;
for (var i = 0, m = nodes.length; i < m; i++) {
var n = nodes[i];
if (n.nodeType == n.TEXT_NODE) {
// do some swappy text to html here?
n.textContent = linkify(n.textContent);
} else {
repl(n);
}
}
}
Ihr Beispielcode ist so chaotisch und so viel, dass ich nicht einmal weiß, wo ich anfangen soll! Können Sie es ein wenig aufräumen und nur ein normales Beispiel haben und das gewünschte mit textNode?
var txt = document.createElement("span");
txt.innerHTML = "Some text with <b>html</b> support";
node.replaceWith(txt);
Wo node ist der textNode
replaceWith() ist verfügbar als Vanille-JavaScript auf modernen Browsern (Chrome und Firefox; Edge befindet sich in der Entwicklung).
– Franklin Yu
31. Oktober 2017 um 18:20 Uhr
Aber in der Vanilla-Version gibt es keine HTML-Unterstützung. Tags erscheinen nur als Text.
– Kokodoko
14. Dezember 2018 um 13:02 Uhr
Bauen Sie auf der Antwort von @AlexJeffcott auf: Verwendung der perf-optimierten Version DokumentFragment anstatt herumzuspielen <span>innerHTML und childNodes😁
Ihr Beispielcode ist so chaotisch und so viel, dass ich nicht einmal weiß, wo ich anfangen soll! Können Sie es ein wenig aufräumen und nur ein normales Beispiel haben und das gewünschte mit textNode?
– Hanlet Escaño
21. März 2013 um 16:50 Uhr
jsfiddle.net/AMhRK/4
– Ryan
21. März 2013 um 17:05 Uhr
@ryan es ist nah, aber Sie sehen, dass es die bereits richtig verlinkten URLs verstümmelt.
– Jippers
21. März 2013 um 17:28 Uhr
@HanletEscaño hier ist eine “aufgeräumte” Geige jsfiddle.net/AMhRK/6
– Jippers
21. März 2013 um 17:39 Uhr
@Jippers hast du Ryans jsFiddle ausprobiert? Es funktioniert tatsächlich.
– Hanlet Escaño
21. März 2013 um 17:40 Uhr