Estoy tratando de averiguar si el content en un ::before selector cambia el texto interno del padre en cualquier navegador. Lo he probado en Chrome y Safari hasta ahora, y tampoco cambia el texto interno.
document.querySelectorAll("li").forEach(function() { this.addEventListener("click", function(e) { e.target.classList.toggle("Completed"); }); }); document.getElementById("test").addEventListener("click", function() { console.log(testUL.innerText); }); li.Completed:before { content: "\2713"; color: green; background: #ffdf87; } <ul id="testUL"> <li>a</li> <li>b</li> <li>c</li> </ul> <button id="test">Test innerText</button>Esto es bueno para mis propósitos (estoy tratando de hacer coincidir documentos solo por texto). Pero por lo que leí en Mozilla, parece que tal vez este sea un comportamiento incorrecto.
https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/innerText
¿Alguien puede probar este fragmento que publiqué aquí y confirmar si se produce un comportamiento similar en MS Edge?
Sí, el mismo comportamiento en MS Edge (Windows10).
Esto es como se esperaba. El contenido del pseudoelemento se puede ver, pero no es una parte 'adecuada' de la página, de ahí la palabra 'pseudo'.
Básicamente está ahí para efectos visuales en lugar de contenido 'real'. Por ejemplo, normalmente los lectores de pantalla no se darán cuenta.