One thing you could do is create a clone of the element, add a character, and check if the element's height has changed. If it changed it means that it was full and did not admit more. If the height is the same, it means that it still had room for more text.
For this you can create a function like this:
function comprobarLleno(selector) {
// seleccionamos el original y creamos un clon
var original = document.querySelector(selector);
var copia = original.cloneNode(true);
// le añadimos un carácter (por ejemplo, un punto) y lo escondemos con CSS
copia.innerHTML += ".";
copia.style.visibility = "hidden";
copia.style.overflow = "auto";
// añadimos el clon al documento
document.querySelector("body").append(copia);
// comparamos las alturas de clon y original
if (copia.scrollHeight > original.scrollHeight) {
// si la altura del clon es mayor, el elemento original estaba lleno
console.log('El elemento ${selector} está lleno');
} else {
// la altura del clon es igual a la del elemento original que no estaba lleno
console.log('El elemento ${selector} NO está lleno');
}
// eliminamos el clon
copia.remove();
}
And here you can see it working:
function comprobarLleno(selector) {
var original = document.querySelector(selector);
var copia = original.cloneNode(true);
copia.innerHTML += ".";
copia.style.visibility = "hidden";
copia.style.overflow = "auto";
document.querySelector("body").append(copia);
if (copia.scrollHeight > original.scrollHeight) {
console.log('El elemento ${selector} está lleno');
} else {
console.log('El elemento ${selector} NO está lleno');
}
copia.remove();
}
comprobarLleno("#tarjeta-1");
comprobarLleno("#tarjeta-2");
.tarjeta {
font-size: 16px;
width: 150px;
height: 150px;
border:1px solid black;
float: left;
margin: 10px;
}
<div class="tarjeta" id="tarjeta-1">
En un lugar de la Mancha, de cuyo nombre no quiero acordarme...
</div>
<div class="tarjeta" id="tarjeta-2">
En un lugar de la Mancha, de cuyo nombre no quiero acordarme, no ha mucho tiempo que vivía un hidalgo de los de lanza en astillero, adarga antigua, rocín...
</div>