Javascript литерал экранировал в IE, но не в Firefox, Chrome или Safari - PullRequest
1 голос
/ 28 сентября 2011

Я сгенерировал встроенный код, который присваивает значения массиву 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» как escape-последовательность.

Я не хочу, чтобы javascript анализировал мои литералы для escape-символов.Я попытался старый и положить его в тег CDATA.Есть ли решение этой проблемы?

TIA, Eddie

Ответы [ 3 ]

2 голосов
/ 28 сентября 2011

Если ваша строка будет содержать буквенную обратную косую черту, она должна быть экранирована.Например:

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

Если вы создаете JSON с библиотекой на сервере, он будет автоматически экранирован.То есть, пожалуйста, не создавайте JSON вручную.

1 голос
/ 28 сентября 2011

Вы пробовали это?:

"valueText" : "c:\\uploadfile.txt"
0 голосов
/ 28 сентября 2011

На этой странице MSDN указано, что для правильной обработки в JScript (IE) необходимо использовать две обратные косые черты.

Примечание. Если вы хотите использовать буквенный текст\ u в строке, затем используйте две обратные косые черты - (\ u) - одну для экранирования первой обратной косой черты.

...