这是我一直在处理几个月的问题,我非常感谢任何帮助。Internet Explorer忽略JS文件中的所有“0”字符
我正在编码一个字符串,并使用下面的函数将输出写入MyFile.js。在调试我的示例时,显示为整数的char encodedCode[]
具有length 12
以及这些值:97,0,108,101,114,116,40,34,80,114,0,105
。
正如我从Notepad ++中看到的,MyFile.js正确地生成了预期的大小和字符。
MyFileServlet.java
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{
res.setCharacterEncoding("iso-8859-1");
res.setHeader("Content-Type", "text/javascript;charset=iso-8859-1");
res.setHeader("Content-Disposition","attachment;filename=MyFile.js");
PrintWriter printer=res.getWriter();
char encodedCode[]=encode(req.getParameter("originalScript"));
printer.write(encodedCode);
printer.close();
}
然而,当我尝试从MyFile.html运行一些调试代码MyFile.js(见下文),我得根据浏览器不同的行为:
- 铬/火狐:
length 12
值97,0,108,101,114,116,40,34,80,114,0,105
- 的Internet Explorer 9:
length 10
值97,108,101,114,116,40,34,80,114,105
所以IE是忽略所有的 “0” 字。为什么?非常感谢您
的jsfiddle:http://jsfiddle.net/vnqL2/
编辑:我试着写这些字节到外部二进制文件MyFile.xxx和从Javascript/JQuery的/阿贾克斯/ XMLHttpRequest的阅读他们,我仍然得到同样的问题与IE。
MyFile.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>My Page</title>
</head>
<body>
<script type="text/javascript" charset="iso-8859-1" src="MyFile.js">
</script>
</body>
</html>
MyFile.js
function d(a)
{
a=(a+"").split("");
var l=a.length,x=[l];
alert(l);
for(i=0;i<l;i++){
x[i]=a[i].charCodeAt(0);
document.write(x[i]);
}
};
d("HERE GO THOSE BYTES HARDCODED");
BTW,设置显示的bug一个http://jsfiddle.net/是非常方便的这种问题 – 2012-08-13 00:22:58
的完成!但不幸的是,我不能在那里硬编码一些字符(见注释) – Arturo 2012-08-13 00:35:20
如何填写“这里有些字节是硬编码的”?我不希望在JavaScript字符串文字中嵌入空字符以很好地工作。 – Eric 2012-08-13 00:38:39