Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   JSON и его переопределение. (https://javascript.ru/forum/extjs/56250-json-i-ego-pereopredelenie.html)

viktorina 06.06.2015 19:04

JSON и его переопределение.
 
Мой код используется на нескольких сайтах. На некоторых из них используется Ext и в нём JSON переопределён.
В моём коде вызывается JSON.stringify и происходит ошибка.
Я проверил и увидел JSON[encode/decode] вместо stringify/parse
У меня есть решение проверять на "если есть stringify", то ......

Кто либо поимел в своей жизни подобную проблему? Как красиво оформить?

siber-biber 06.06.2015 19:43

Вообще Ext.JSON, а не JSON. И я не думаю что сам ExtJS нативные объекты переписывает. Какая версия extjs?

А вообще может у вас гдето в коде затесался with ..типа такого:
with (Ext) {
   // вот здесь JSON будет ссылаться на Ext.JSON
}

viktorina 06.06.2015 19:51

Дело в том, что перед ошибкой я делаю проверку и вижу, что JSON переопределён, а после выполнения всех скриптов JSON стандартный.
window.JSON проверяю в контексте window
if (!JSON.stringify) {
   if (JSON.encode) {
        JSON.stringify = JSON.encode;
    }
}

Так очень страшно?

siber-biber 07.06.2015 07:55

Ну как хак то это пойдет если всё работает. Но правильнее конечно былоб место найти где переопределяется ..хотя и более трудозатратно.

Я еще забыл спросить, какой браузер?

nohuhu 08.06.2015 07:49

В index.html вставьте где-нибудь повыше:

Код:

<script type="text/javascript">
    var Ext = Ext || {};
    Ext.USE_NATIVE_JSON = true;
</script>

Должно помочь. :)

viktorina 08.06.2015 09:50

Цитата:

Сообщение от siber-biber (Сообщение 374138)
Ну как хак то это пойдет если всё работает. Но правильнее конечно былоб место найти где переопределяется ..хотя и более трудозатратно.

Я еще забыл спросить, какой браузер?

Хром. В опере работает.


Часовой пояс GMT +3, время: 06:25.