Что произойдет, если скрипт polyfill не удастся загрузить? - PullRequest
0 голосов
/ 09 июня 2018

У меня есть SPA (построенный на веб-пакете, с babel и т. Д.), Который включает в себя polyfill в index.html:

<script src="https://cdn.polyfill.io/v2/polyfill.min.js?features=Promise,Array.prototype.includes,Element.prototype.remove"></script>

Один вариант использования для polyfill предназначен для использования PromiseAPI в IE 10-11.

Мой мониторинг ошибок сообщает об ошибке на клиенте IE 11 следующего содержания:

ReferenceError: 'Promise' is undefined

Поэтому я предполагаю, что конкретному сеансу не удалось загрузить полизаполнение для некоторыхпричина.

Мой вопрос: как мне поступить с этим делом?Это сценарий, который я должен ожидать иногда?Ожидается ли, что пользователь заметил, что приложение не работает должным образом, и перезагрузил страницу?

Ответы [ 2 ]

0 голосов
/ 09 июня 2018

Поскольку вы упомянули, что используете веб-пакет, было бы лучше включить необходимые полифилы непосредственно в проект с помощью оператора импорта (что-то вроде core.js ), а не с помощью cdn-polyfill.io.

Однако вы можете добавить идентификатор к элементу сценария и прослушать события onload и onerror, чтобы определить, успешно ли загружен (не) сценарий, например:

<script id="polyfillScript" src="https://cdn.polyfill.io/v2/polyfill.min.js?features=Promise,Array.prototype.includes,Element.prototype.remove"></script>

В вашем проекте index.js:

document.getElementById('polyfillScript').addEventListener('error', () => {
    alert('Failed to load polyfill!');
});
0 голосов
/ 09 июня 2018

Существует событие ошибки, которое вы можете прикрепить, чтобы обеспечить больший контроль, если вы действительно беспокоитесь.Вам обычно не нужно обращаться с этим явно, хотя.

В этом конкретном случае вы можете перейти к использованию babel для создания пакета с полифилами, включенными в ваши скрипты.Это добавляет дополнительный шаг сборки к вашему процессу.

...