<div id="foo">↓</div>
alert(document.getElementById("foo").innerHTML.length); // alerts 1
Quindi, sulla base che razionale, creare un div, aggiungere il tuo entità mescolati cavalcato stringa ad esso, estrarre il codice HTML e controllare la lunghezza.
var div = document.createElement("div");
div.innerHTML = "↓↓↓↓";
alert(div.innerHTML.length); // alerts 4
Try it here.
Si potrebbe desiderare di mettere che in una funzione per comodità, ad esempio:
function realLength(str) { // maybe there's a better name?
var el = document.createElement("div");
el.innerHTML = str;
return el.innerHTML.length;
}
Soluzione intrigante. –
I [modified the fiddle] (http://jsfiddle.net/e89hJ/1/) e ho testato questa soluzione contro gli input e gli output della soluzione basata su libreria che ho postato e c'era qualche incoerenza. Vale a dire, ho inserito un input codificato e ottenuto 110 caratteri, quindi ho inserito un input decodificato degli stessi dati e ottenuto 96 caratteri. Non sei sicuro del perché esattamente, ma potrebbe valerne la pena. –
@Nathan Taylor - L'incoerenza potrebbe essere causata da '.val' o interruzioni di riga di jQuery. – karim79