优雅的方式包括对IE的es6承诺

时间:2017-08-04 14:45:18

标签: javascript ecmascript-6 promise

由于<div>在所有IE版本中都是not support,我想让IE用户下载HTML格式的pollyfill。

Promise

然而,IE 10和11中的conditional comments are not supported。因此上述代码在IE 10和11中不起作用。

然后,Microsoft提供了一种解决方法。

<!--[if IE]>
<script src="//cdnjs.cloudflare.com/ajax/libs/es6-promise/4.1.1/es6-promise.min.js"></script>
<![endif]-->

这使得IE 10和11的行为与IE 9相似。

但我的网站仅适用于IE 10+。所以这个解决方案不适合我。 有没有其他方法可以解决这个问题?

2 个答案:

答案 0 :(得分:10)

只需使用

<script>
    if (typeof Promise !== "function")
        document.write('<script src="//cdnjs.cloudflare.com/ajax/libs/es6-promise/4.1.1/es6-promise.min.js"><\/script>');
</script>

不仅适用于IE用户,而且适用于没有本地Promise实现的每个环境。

答案 1 :(得分:0)

没有外部脚本

var lPromise = function(handler) {
  if (typeof Promise === "function")
    return new Promise(handler);
  var self = this;
  self._handler = handler;
  this.then = function(onFulfilled, onRejected) {
    this._handler(onFulfilled, onRejected);
  }
  return self;
}
this.Promise = function(handler) {
  return new lPromise(handler);
}