В режиме эмуляции IE 8 не подгружаются полифилы с Polyfill.io
уважаемые участники сообщества stackoverflow.com!
У меня будет небольшой вопрос к Вам. Кто встречался с подобной проблемой, поделитесь, пожалуйста, как Вы вышли из данной ситуации.
С уважением, Сирота Дмитрий
Итак: есть простой код, с помощью которого я подключаю к своей странице скрипты, привожу его ниже. (Касательно проета, всё это делается на html-странице, свёрстанной для личного удовольствия). Среди скриптов есть два полифила с ресурса Polyfill.io. Проблема: в некоторых случаях, например, при использовании эмуляции IE 8 в IE 11 на ОС Windows 7 подгружаются практически пустые файлы без полифилов,. Возможно, ситуация связана с тем, как сервис определяет браузер. Но если в том же режиме эмуляции в адресную строку вставить сформированную на Polyfill.io ссылку, то с большой вероятностью браузер предложит загрузить на компьютер файл со всем необходимым кодом. Вопрос: это скорее баг Polyfill.io, или я как-то неправильно подключаю скрипты к странице? Если проблема в моём коде, прошу Вас привести свой рабочий. Если проблема в IE, то здесь вряд ли что-то уже поможет;)
Надеюсь на Ваше понимание и Благодарю Вас за уделённое моей проблеме время
P.S. Про Promise-ы знаю, про babel слышал, core.js видел. Интересует именно вопрос с Polyfill.io
P.P.S. Вот код:
function appendScript(source, deferFlag) {
var script = document.createElement('script');
script.src = source;
if(deferFlag) {
script.setAttribute('defer', 'defer');
}
try {
document.body.appendChild(script);
} catch(error) {
console.log('Error: ' + error.name + ": error in script '" + script.src + "'");
}
//
console.log("script " + script.src + " is added");
//
return script;
}
//
function loadScript(src, deferFlag, callback) {
var script = appendScript(src, deferFlag);
script.onload = new function() {
callback(script);
}
}
//
//Appending scripts to web-page, to body
function loadPage() {
try {
loadScript("https://polyfill.io/v3/polyfill.min.js?features=Object.defineProperties%2CObject.defineProperty", false, function(script) {
console.log("script " + script.src + " is loaded");
//
loadScript("https://polyfill.io/v3/polyfill.js?features=document.getElementsByClassName%2CElement.prototype.dataset", false, function(script) {
console.log("script " + script.src + " is loaded");
//polyfill #1
appendScript("js/polyfill_isInteger.js", false);
appendScript("js/script_p1.js", false);
//polyfill #2
appendScript("js/polyfill_sayPhrase.js", false);
appendScript("js/script_p2.js", false);
//polyfill #3
loadScript("js/polyfill_Input_month.js", false, function(script) {
console.log('script "' + script.src + '" is loaded');
//
setTimeout(function() {
appendScript("js/script_p3.js", true);
}, 100);
});
//tabs
appendScript("js/script_tabs.js", false);
//other scripts
//...
});
});
} catch(error) {
console.log('Error: ' + error.name + ": " + error.message);
}
}
Ответы (1 шт):
polyfill.io узнает о вашем браузере по хедеру user-agent, скорее всего вы не правильно выставляете эмуляцию. Надо поставить user-agent тоже в ie8 и тогда polyfill.io отдает полифилы.
