特殊字符\u2028导致的Javascript脚本异常
JSONP请求的时候返回的是一个Js方法,如果其结果对象的属性值含有非法字符的话,浏览器解析失败就会报错。
常见于文章内容,textarea的输入。
\u2028是一个神奇的字符,是行分隔符,会被浏览器理解为换行,而在Javascript的字符串表达式中是不允许换行的,从而导致错误。
浏览器上表现为一个小点,并且在编辑器里并不会显示出来,浏览器也不会加以解析
{"summary":"\n?中控台彩色大屏"}
把特殊字符转义替换即可,代码如下所示:
str = str.replace("\u2028", "\\u2028");
替换后,用之前有问题的文章测试,加载正常,问题解决。
另外,Javascript中的特殊字符一共有13个,建议都进行转义处理,如下:
| Unicode | 字符值 | 转义序列 | 含义 | 类别 |
|---|---|---|---|---|
| \u0008 | \b | Backspace | ||
| \u0009 | \t | Tab | 空白 | |
| \u000A | \n | 换行符(换行) | 行结束符 | |
| \u000B | \v | 垂直制表符 | 空白 | |
| \u000C | \f | 换页 | 空白 | |
| \u000D | \r | 回车 | 行结束符 | |
| \u0022 | " | 双引号 (") | ||
| \u0027 | ‘ | 单引号 (‘) | ||
| \u005C | \ | 反斜杠 () | ||
| \u00A0 | 不间断空格 | 空白 | ||
| \u2028 | 行分隔符 | 行结束符 | ||
| \u2029 | 段落分隔符 | 行结束符 | ||
| \uFEFF | 字节顺序标记 | 空白 |
http://www.mamicode.com/info-detail-1261315.html
原文:https://www.cnblogs.com/everlose/p/12501279.html