Javascript文字在IE中逃脱,但不包括Firefox,Chrome或Safari

时间:2011-09-27 22:31:44

标签: javascript internet-explorer escaping

我已生成内联代码,可将值分配给javascript数组。数组的一个元素应设置为“c:\ folder \ somefilename”。这个陈述是巨大的,所以为了简洁我最省略了:

<SCRIPT type="text/javascript">    
var StepsList = {"steps": [
    {
        "id": "RST4551509111516131001035411012110410849",
        "stepAudio": "",
        "screenImage": "IO1A.PNG",
        "demoNote": "",
         "controlRect": {
            "top": "297",
            "left": "256",
            "right": "277",
            "bottom": "318"
            },
        "valueText": "c:\uploadfile.txt",
        "label": "Presentation Server File"
    [snipped]
</SCRIPT>

在代码生成之前,从用户输入捕获valueText元素的内容“c:\ uploadfile.txt”。当此代码在Chrome,Firefox,IE5,IE6或Safari中执行时,文字不会被解析并且只是正确地分配给数组。 IE7,8和9抛出错误“预期的十六进制数字”,将“\ u”视为转义序列。

我不希望javascript解析转义字符的文字。我尝试了旧的并将其放入CDATA标签。这个问题有解决方法吗?

TIA, 埃迪

3 个答案:

答案 0 :(得分:2)

如果您的字符串包含文字反斜杠,则必须对其进行转义。例如:

{"valueText": "c:\\uploadfile.txt"}

如果您在服务器上使用库创建JSON,它将自动转义。也就是说,请不要手工生成JSON。

答案 1 :(得分:1)

你试过这个吗?:

"valueText" : "c:\\uploadfile.txt"

答案 2 :(得分:0)

This MSDN page表示在JScript(IE)中处理此问题的正确方法是使用两个反斜杠。

  

注意:   如果你想在字符串中使用文字文本\ u,那么使用两个反斜杠 - (\ u) - 一个来逃避第一个反斜杠。