padStart() not working in IE11 padStart() not working in IE11 angularjs angularjs

padStart() not working in IE11


IE 11 is not supporting this function. Please take a look here: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart#Browser_compatibility

What you are looking for are polyfills to fill up missing functions of your browser.The following code also taken from developer.mozilla.org will help you:

// https://github.com/uxitten/polyfill/blob/master/string.polyfill.js// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStartif (!String.prototype.padStart) {    String.prototype.padStart = function padStart(targetLength,padString) {        targetLength = targetLength>>0; //truncate if number or convert non-number to 0;        padString = String((typeof padString !== 'undefined' ? padString : ' '));        if (this.length > targetLength) {            return String(this);        }        else {            targetLength = targetLength-this.length;            if (targetLength > padString.length) {                padString += padString.repeat(targetLength/padString.length); //append to original to ensure we are longer than needed            }            return padString.slice(0,targetLength) + String(this);        }    };}

Edit: As mentioned in the comments, by @Plaute, the function repeat needs also to be polyfilled which can be found here: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat

Or include this snippet:

if (!String.prototype.repeat) {  String.prototype.repeat = function(count) {    'use strict';    if (this == null) {      throw new TypeError('can\'t convert ' + this + ' to object');    }    var str = '' + this;    count = +count;    if (count != count) {      count = 0;    }    if (count < 0) {      throw new RangeError('repeat count must be non-negative');    }    if (count == Infinity) {      throw new RangeError('repeat count must be less than infinity');    }    count = Math.floor(count);    if (str.length == 0 || count == 0) {      return '';    }    // Ensuring count is a 31-bit integer allows us to heavily optimize the    // main part. But anyway, most current (August 2014) browsers can't handle    // strings 1 << 28 chars or longer, so:    if (str.length * count >= 1 << 28) {      throw new RangeError('repeat count must not overflow maximum string size');    }    var maxCount = str.length * count;    count = Math.floor(Math.log(count) / Math.log(2));    while (count) {       str += str;       count--;    }    str += str.substring(0, maxCount - str.length);    return str;  }}

Alternatively, to work around the String.prototype.repeat dependency, use the following line:

padString += Array.apply(null, Array(targetLength)).map(function(){ return padString; }).join("");