Сегодня по просьбам пользователей пришлось налаживать совместимость в нашем проекте с IE 11 и ниже. И тут выяснилось что IE не поддерживает асинхронный код Promise и метод поиска подстроки includes.
Вообще забавно вести отладку на IE, когда вся разработка производится на Mac OS. Тут на помощь приходит VirtualBox и установка винды в виртуальной машине. В виртуалке создается сеть между гостевой системой и хостом, и далее появляется возможность использования виндового IE, для открытия и отладки проекта.
Promise
Для решения проблемы с Promise в IE 11 и прочих браузерах, где он не поддерживается, существует полифил es6-promise.
npm install es6-promise –save
Подключаем в проект es6-promise.auto.js и проблема с совместимостью Promise() исчезает.
String.includes()?
Метод includes(), который определяет, находится ли одна строка внутри другой, так-же не доступен в IE 11. Решаем эту проблему очень просто:
if (!String.prototype.includes) {
String.prototype.includes = function (search, start) {
‘use strict’;
if (typeof start !== ‘number’) {
start = 0;
}if (start + search.length > this.length) {
return false;
} else {
return this.indexOf(search, start) !== -1;
}
};
}