14.02.2012, 16:47
|
Интересующийся
|
|
Регистрация: 09.12.2010
Сообщений: 12
|
|
JSON.stringify в IE8
Имеем следующий незамысловатый кусок кода:
JSON.stringify({Test: "Тест1"})
Запускаем в разных браузерах - имеем:
Chrome, FF, IE9 (в т.ч в режиме совместимости c IE8) -
"{"Test":"Тест1"}"
в IE8 -
"{"Test":"\u0422\u0435\u0441\u04421"}"
Собственно, вопрос, почему IE8 ведет себя иначе и можно ли его образумить?
|
|
14.02.2012, 16:51
|
|
prodigy
|
|
Регистрация: 01.11.2010
Сообщений: 503
|
|
Это вы увидели в console.log ?
alert("\u0422\u0435\u0441\u04421");
Это просто в юникоде закодированный текст, это то то же самое, просто там такая консоль, показывает как есть видимо
alert("\u0422\u0435\u0441\u04421" === "Тест1")
__________________
readOnly
|
|
14.02.2012, 17:43
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
poorking,
Вы не совсем правы, попробуйте запустить в ИЕ8 вот это:
alert( JSON.stringify({Test: "Тест1"}).replace(/\\/g, '_') );
В во всех браузерах вы увидите:
{"Test":"Тест1"}
а в ИЕ8 вы увидите:
{"Test":"_u0422_u0435_u0441_u04421"}
|
|
14.02.2012, 18:04
|
|
prodigy
|
|
Регистрация: 01.11.2010
Сообщений: 503
|
|
Подождите подождите, в моем IE8 нет объекта JSON (Почему у вас всех есть?). А если ТС использует библиотеку, восстанавливающую объекс, то это она виновата
Версия: 8.0.6001.18702
__________________
readOnly
Последний раз редактировалось poorking, 14.02.2012 в 18:07.
|
|
14.02.2012, 18:05
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
А образумить его можно так:
var normalJSONString = JSON.stringify({Test: "Тест1"}).replace(/\\u([\d]{4})/g, function(_, a){ return String.fromCharCode(parseInt(a, 16)) });
Пример проверять в ИЕ8:
alert( JSON.stringify({Test: "Тест1"}).replace(/\\u([\d]{4})/g, function(_, a){
return String.fromCharCode(parseInt(a, 16));
}).replace(/\\/g, '_') );
|
|
14.02.2012, 18:06
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Сообщение от poorking
|
Версия: 8.0.6001.18702
|
У меня такая же версия, и JSON там всегда был и есть.
|
|
14.02.2012, 18:12
|
|
prodigy
|
|
Регистрация: 01.11.2010
Сообщений: 503
|
|
devote,
Как вы думаете, почему у меня его нет? Я использую библиотеку, потому что он реально нужен, но его не было тогда и нет сейчас. Попробую переустановить IE чтоли, у меня Win ХР pro на этом компе, тут нет его, дома на win7 проверю его существование
__________________
readOnly
|
|
14.02.2012, 18:12
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от devote
|
У меня такая же версия, и JSON там всегда был и есть.
|
Не всегда, в зависимости от doctype и режима совместимости его может не быть.
|
|
14.02.2012, 18:13
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Сообщение от poorking
|
у меня Win ХР pro на этом компе
|
Я тоже тестю на Win XP Pro, и всегда был и есть объект JSON, видимо что-то у вас отвалилось в ИЕ либо хз... Но в ИЕ8 он всегда был
|
|
14.02.2012, 18:15
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Сообщение от Kolyaj
|
в зависимости от doctype
|
Ну это вряд ли, без доктайпа он есть, и с ними тоже... а вот насчет:
Сообщение от Kolyaj
|
режима совместимости его может не быть.
|
вполне возможно что кнопочку отжать забыли с режима совместимости под ИЕ7
|
|
|
|