<div id="foo">↓</div>
alert(document.getElementById("foo").innerHTML.length); // alerts 1
Так на основе этого обоснования, создать DIV, добавьте ваш перепутали объект охваченной строки к нему, извлекать HTML и проверьте длину.
var div = document.createElement("div");
div.innerHTML = "↓↓↓↓";
alert(div.innerHTML.length); // alerts 4
Try it here.
Вы можете положить, что в функции для удобства, например:
function realLength(str) { // maybe there's a better name?
var el = document.createElement("div");
el.innerHTML = str;
return el.innerHTML.length;
}
Интригующее решение. –
Я [модифицировал скрипку] (http://jsfiddle.net/e89hJ/1/) и протестировал это решение против входов и выходов в библиотечном решении, которое я разместил, и была некоторая несогласованность. А именно, я ввел кодированный вход и получил 110 символов, затем ввел декодированный ввод одних и тех же данных и получил 96 символов. Не знаю, почему именно, но, возможно, стоит проверить. –
@Nathan Taylor - Несогласованность может быть вызвана '.val' jQuery или разрывами строк. – karim79