坑货u0000u0000u0000u0000u0000u0000u0000Ou0000u0000u0000u0000u0000u0000u0000u0000 - TOMMYHU - 专注互联网开发及运营技术,提供相关资料及软件下载,奇趣网络时事评论!
Jan 5

坑货u0000u0000u0000u0000u0000u0000u0000Ou0000u0000u0000u0000u0000u0000u0000u0000 不指定


let no="u0000u0000u0000u0000u0000u0000u0000Ou0000u0000u0000u0000u0000u0000u0000u0000"
no = no.replace(/\u0000/g,"");

  \u0000是unicode表示的一个特殊字符,也就是二进制的0,在c里面用这个字符作为字符串结束的标志。
正是因为这个原因,造成调用某些方法的时候字符串被截断。例子:
<textarea id="ff"></textarea>
<script>
var x = 'xxx\u0000yyy';
alert(x);
alert(x.length);
var elm = document.getElementByIdx('ff');
elm.value = x;
y = x.replace('\u0000', ' ');
alert(y);
alert(y == 'xxx\u0000yyy');
alert(y == 'xxx yyy');
alert(elm.value.length);
alert(elm.value == 'xxx\u0000yyy');
alert(elm.value == 'xxx yyy);
</script>
本身声明这个字符串的时候是可以接受\u0000的,所以长度什么的都对
但是通过alert调用的时候,字符串就被截断,认为到\u0000就结束了
同样当作一个字符串赋值给一个textarea的时候,也被截断了(IE6)。
对于firefox,不被截断,textarea.value的值就是'xxx\u0000yyy'
▲返回顶部
Last modified by tommyhu on2017/01/05 15:43
Tags:

Add a comment

Nickname

emotemotemotemotemotemotemotemotemotemotemotemotemotemotemotemot