IE 11

Сегодня по просьбам пользователей пришлось налаживать совместимость в нашем проекте с 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;
        }
    };
}