Javascript文字转义在IE,但不是Firefox, Chrome或Safari

Javascript literal escaped in IE but not Firefox, Chrome or Safari

本文关键字:Firefox Chrome Safari 文字 转义 IE Javascript      更新时间:2023-09-26

我已经生成了内联代码,将值分配给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,埃迪

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

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

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

你试过吗?:

"valueText" : "c:''uploadfile.txt"

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

注意:如果要在字符串中使用文本'u,则使用两个反斜杠- ('u) -一个用于转义第一个反斜杠。