鍍金池/ 問答/網(wǎng)絡(luò)安全  HTML/ ie11對(duì)es6支持的問題

ie11對(duì)es6支持的問題

.babelrc文件如下

{
  "presets": [
    [
      "latest",
      {
        "modules": false
      }
    ],
    "react",
    "stage-2"
  ],
  "plugins": [
    "transform-async-to-generator",
    "transform-decorators-legacy",
    "transform-runtime",
    [
      "import",
      {
        "libraryName": "antd",
        "style": true
      }
    ]
  ]
}

babel-polyfill也在項(xiàng)目入口引用了 但是ie11還是報(bào)錯(cuò)對(duì)象不支持startsWith

回答
編輯回答
命于你

startsWith的mdn,這個(gè)你的看看,ie根本就沒事實(shí)現(xiàn)這個(gè)方法,你既然使用了babel-polyfill,那么你應(yīng)該是看不到startsWith這個(gè)方法的,所以應(yīng)該是沒有被轉(zhuǎn)譯,想想引得babel-polyfill是否正確,考慮使用mdn提供的轉(zhuǎn)譯再寫一遍。

/*! http://mths.be/startswith v0.2.0 by @mathias */
if (!String.prototype.startsWith) {
  (function() {
    'use strict'; // needed to support `apply`/`call` with `undefined`/`null`
    var defineProperty = (function() {
      // IE 8 only supports `Object.defineProperty` on DOM elements
      try {
        var object = {};
        var $defineProperty = Object.defineProperty;
        var result = $defineProperty(object, object, object) && $defineProperty;
      } catch(error) {}
      return result;
    }());
    var toString = {}.toString;
    var startsWith = function(search) {
      if (this == null) {
        throw TypeError();
      }
      var string = String(this);
      if (search && toString.call(search) == '[object RegExp]') {
        throw TypeError();
      }
      var stringLength = string.length;
      var searchString = String(search);
      var searchLength = searchString.length;
      var position = arguments.length > 1 ? arguments[1] : undefined;
      // `ToInteger`
      var pos = position ? Number(position) : 0;
      if (pos != pos) { // better `isNaN`
        pos = 0;
      }
      var start = Math.min(Math.max(pos, 0), stringLength);
      // Avoid the `indexOf` call if no match is possible
      if (searchLength + start > stringLength) {
        return false;
      }
      var index = -1;
      while (++index < searchLength) {
        if (string.charCodeAt(start + index) != searchString.charCodeAt(index)) {
          return false;
        }
      }
      return true;
    };
    if (defineProperty) {
      defineProperty(String.prototype, 'startsWith', {
        'value': startsWith,
        'configurable': true,
        'writable': true
      });
    } else {
      String.prototype.startsWith = startsWith;
    }
  }());
}
2018年1月28日 15:31
編輯回答
做不到

解決了,我有個(gè)vendor.js沒有引入babel-polyfill ...

2017年2月16日 09:42