Задать вопрос
@nooncat

Как правильно подключить polyfill в IE?

Разбираюсь с "обещаниями" здесь: habrahabr.ru/post/245145/. В IE они не поддерживаются. Подключаю через polyfill двумя способами:
1) Если подключаю через document.write все работает. Но на сколько я понимаю если будут траблы с сервером скрипта, то будут траблы с отрисовкой страницы.
2) Если подключаю через appendChild(script), то получаю "Promise" не определено.

Как правильно подключить скрипты?

<!doctype html>
<head>
  <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
  <meta content="utf-8" http-equiv="encoding">
  <script>
    if(window.ActiveXObject || "ActiveXObject" in window){
         //always true in IE
      /*
      document.write('<script src="https://www.promisejs.org/polyfills/promise-6.1.0.min.js"><\/script>');
      */
      var script=document.createElement('script');
      script.src = "https://www.promisejs.org/polyfills/promise-6.1.0.min.js";
      document.documentElement.children[0].appendChild(script);
    }
  </script>
</head>
<body>
  <h1>http</h1>
  <script>

    function get(url) {
      return new Promise(function(succeed, fail) {
        var req = new XMLHttpRequest();
        req.open("GET", url, true);
        req.setRequestHeader('Accept', 'application/json');
        req.addEventListener("load", function() {
          if (req.status < 400)
            succeed(req.responseText);
          else
            fail(new Error("Request failed: " + req.statusText));
        });
        req.addEventListener("error", function() {
          fail(new Error("Network error"));
        });
        req.send(null);
      });
    }

    function getJSON(url) {
      return get(url).then(JSON.parse);
    }

    getJSON("http://eloquentjavascript.net/author").then(function (text) {
      console.log(text);
    }, function (error) {
      console.log("Failed to get author page: " + error);
    });
  </script>
</body>
  • Вопрос задан
  • 4412 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы