jQuery.html()在IE中出现乱码

jQuery.html() being garbled in IE

本文关键字:IE html jQuery      更新时间:2023-09-26

我使用jQuery("#shipdata").html()函数来获取元素的html内容,该元素应该返回日期字符串,例如'5/14/2014'。它在Chrome、Firefox和Safari上都能完美运行。但是在ie浏览器中,它返回一些奇怪的东西:

我试图提醒返回字符串的长度,它说"14",应该是"9"。

我也试着提醒每个字符的键码,发现键码"8206"不仅在字符串的开头,而且在字符"/"之前和之后。

如何去掉这些乱码?

字符8206,或'u200E,它是"从左到右标记"字符。它主要用于双向文本中,表示"这部分"应该从左到右。

根据语言环境的不同,IE可能会插入这些标记以确保正确呈现日期。例如,如果您在一台设置为从右向左语言的计算机上,那么它可能会使用这些标记来帮助呈现。

虽然我不知道是什么原因造成的,但您可能应该对输入进行消毒,例如在空格的情况下。

<div id="shipdata">
    5/12/2014
</div>
上面的

也会导致你的代码失败。那么,试试这个:

jQuery('#shipdata').html().replace(/[^0-9'/]/g,'');

通过使用一小段jquery代码,您可以实现这个结果。检查演示

jquery代码

alert($("#shipdata").html());
alert($("#shipdata").html().length);

<div id="shipdata">5/12/2014</div>