IE6提示“未结束的字符串常量”

1.JAVASCRIPT引用时,使用的字符语言不一致.
比如:<script type=”text/javascript” src=”xxx.js” charset=”UTF-8″>.xxx.js文件内部使用的是GB2312的格式,外面调用使用的是UTF-8,所以文件内部部分特殊字符因为格式不一致,出现乱码,造成此原因.

2.JAVASCRIPT输出HTML字符时,前后标记不匹配.
这种比较常见,往往在输出字符串时,出现单引号(’)或双引号(”)不配对,或者是在document.write()的时候,没有正确输出单引号(’)或双引号(”)

3.参数内出现HTML标记语言或包含换行符
我今天所遇到的是这种情况.因为我所得到的数据以参数形式传给一函数,结果该数据里包含换行符,造成了此错误.
如:一般测试时只使用单行的数据,是正常的,未出现这个错误,.
当测试时使用多行数据,并使用回车链换行,就出行了此错误.因为里面包含了换行符

一般由后端传的变量中带有换行符/引号造成,也有可能是编码造成的特殊字符异常。

案例

function show(value) {
    alert(value);
}
var script = '<script>show("test\n\r");<\/script>';
document.write(script);

JavaScript 编码时把 \n\r 转换为换行,最后输出在页面的 JavaScript 变成

show("test
);

所以造成 JavaScript 语法错误。

使用 jsonp 获取后台输出的 html 页面容易出现此问题,需要在服务器端过滤 \r\n 等特殊符号。

BrowserMessageNumber
IE 6,7,8未结束的字符串常量
Chrome 22Unexpected token ILLEGAL
Firefox 21unterminated string literal
原创文章:IE6提示“未结束的字符串常量” ,未经许可,禁止转载,©版权所有
原文出处:前端开发博客 (http://caibaojian.com/ie6-unterminated-string-constant.html)

发表评论

请登录后发表评论: