yerine kaçtı metin yok Bir belirli bir normal ifadeyle eşleşen her dize etrafında bir <span> ... </span>
ekler bir Chrome uzantısı yazıyorum. RegEx maçı mükemmel çalışır, ancak metnin etrafına span
etiketini doğru şekilde eklemenin bir yolunu bulamıyorum.Neden RegEx çıktısı HTML
Kodum şimdiye kadar geçerli:
// main.js
var regex_pattern = new RegEx('(apple)', 'g'); // Let's pretend I want to match every instance of 'apple'
var textNodes = getTextNodes(); // A function that returns a list of every text node from the DOM
for (var i = 0; i < textNodes.length; i++) {
if (textNodes[i].nodeValue.match(regex_pattern)) {
textNodes[i].nodeValue = textNodes[i].nodeValue.replace(regex_pattern, "<span class='highlight'>$&</span>");
}
}
Bu doğru ve çıkış <span class="highlight">apple</span>
(bu durumda 'elma' olarak) benim RegEx desen her maçı belirleyecektir. Tek sorun, bu işlemin Chrome tarafından HTML olarak ele alınmaması, metin olarak kabul edilmesidir. Bu nedenle, highlight
sınıfına göre tasarlanmış olan 'apple' dünyasını görmek yerine, birebir çıktıyı görürdü: <span class="highlight">apple<span>
Neden bu gerçekleşir ve stil doğru uygulanacak şekilde nasıl düzeltebilirim? Bunun arzulanandan daha az olduğunu farkettiğimde, eşleşen metni bir yayılma alanına kaydırmak için insertBefore()
yöntemini kullanmayı denedim, ancak bu bir şey yapmadı, bu hata kodu nasıl değiştirdiğime bağlı olarak hata ya da span
düğümünü ekleyemedi . Sağladığınız içgörü için teşekkürler!
"createElement" kullanmanız gerekiyor (https://developer.mozilla.org/en-US/docs/Web/API/Document/createElement) –