Хорошо, я не видел дополнения к вопросу. Хотя ранее я сказал, что это невозможно сделать с использованием JavaScript и шрифта, который не является фиксированной шириной ... на самом деле является возможным!
Вы можете обернуть каждый отдельный символ в , и найдите первый
, который находится за пределами родителя. Что-то вроде:
function countVisibleCharacters(element) {
var text = element.firstChild.nodeValue;
var r = 0;
element.removeChild(element.firstChild);
for(var i = 0; i < text.length; i++) {
var newNode = document.createElement('span');
newNode.appendChild(document.createTextNode(text.charAt(i)));
element.appendChild(newNode);
if(newNode.offsetLeft < element.offsetWidth) {
r++;
}
}
return r;
}