One of these is the appearance of the C2A0 character, otherwise known as the non-breaking space. When typing a space within a content editable, some browsers will insert instead of a normal ASCII 32 space character.
Here's some code that shows what happens
// suppose this is the content editable.. var element = document.createElement("div"); // and you just typed a space element.innerHTML=" " // we get the text to send to the server var text = element.innerText; // on Chrome text will a string that looks like " " // on Firefox you'll get undefined // and on IE you'll get an ASCII 32 space! // so on some browsers.. text == " "; // returns falseThe difference becomes obvious when you encode it:
encodeURIComponent(" "); // returns "+" encodeURIComponent(text); // returns "%C2%A0"To get around this problem, I wrote the following.
This uses jQuery for brevity. It also yields consistent results across different browsers.
(function() { var nbsp = jQuery("Hope it helps somebody. ").text(); return { getText: function(element) { return jQuery(element).text().replace(nbsp, " "); } } })();
No comments:
Post a Comment