#spartacus-storefront
Вопрос:
Мы оцениваем Spartacus для нашей новой платформы сайта электронной коммерции B2B. Одним из основных требований является поддержка IE11 (ОБЯЗАТЕЛЬНО). Согласно документации Spartacus, сам Angular поддерживает IE11 с полифиллами, поэтому Spartacus должен работать в IE11 без стилей Spartacus (переменный css).
Мы попытались заполнить OOTB Spartacus (3.1 и 3.2 в режиме SSR и без SSR), и он загружает страницы и функции, но мы получаем ошибку списка классов в веб-консоли. Даже несмотря на то, что нам потребовались полифиллы. Ниже приведены заполнители, которые мы установили и настроили :
- classlist.js
- web-animation.js
- ядро-js
- а также целевой компиляцией является es5.
IE11 -Ошибка списка классов Spartacus 3.1 и 3.2
Любая помощь в устранении этой ошибки списка классов была бы полезна.
Итак, кто-нибудь заставил Spartacus работать в IE11 с вашими собственными таблицами стилей ?
Комментарии:
1. Я изложил проблему и вопрос, как я уже говорил в этом посте. Мы получаем сообщение об ошибке, чтобы заставить Spartacus работать в IE11, и был опубликован соответствующий снимок экрана конфигурации и ошибок pollyfill. Пожалуйста, дайте мне знать, если мне нужно быть более ясным, чем это, и нужна какая-либо другая информация. А также, в общем, спрашиваю форум Спартака, чтобы кто-нибудь заставил спартака работать в IE11. не знаю, что в этом плохого.
Ответ №1:
Похоже, что основная проблема заключается undefined
в том, что ожидается, что будет определена некоторая ссылка на элемент DOM. Поэтому доступ к его свойству classList
невозможен.
Как отлаживать
Наиболее оптимальным способом отладки будет использование репозитория Spartacus: пожалуйста, клонируйте репозиторий spartacus, установите deps (yarn) и запустите yarn start
. Затем откройте его в IE11 и, пожалуйста, отладьте.
Класс, который выглядит как кандидат на то, чтобы вызвать ошибку, может быть PageTemplateDirective
.
Я искал кодовую базу Spartacus, где classList
есть доступ к собственности. В большинстве случаев элементом DOM является body
— который всегда должен быть определен. Это относится не только к PageTemplateDirective
и ProductIntroComponent
(но последнее не отображается на домашней странице, поэтому я думаю, что это не имеет значения).
Пожалуйста , установите отладчик в методах PageTemplateDirective
, чтобы проверить, когда ссылка на элемент DOM undefined
, и, пожалуйста, изучите ее подробнее.
Продолжающееся устаревание ie11 компанией Angular
Пожалуйста, обратите внимание, что Angular планирует отказаться от поддержки IE11 в ng12 (в ближайшее время) и отказаться от нее в ng13 (конец 2021 года). См.: https://github.com/angular/angular/issues/41840