在IE 11中添加startsWith

时间:2016-03-25 03:15:27

标签: javascript internet-explorer

IE 11不支持startsWith字符串。 (Look here

如何添加原型以便它支持该方法?

5 个答案:

答案 0 :(得分:42)

直接来自MDN page,这是polyfill:

if (!String.prototype.startsWith) {
    String.prototype.startsWith = function(searchString, position){
      position = position || 0;
      return this.substr(position, searchString.length) === searchString;
  };
}

这可以安全地在任何浏览器中使用。如果该方法已存在,则此代码将看到该操作并且不执行任何操作。如果该方法不存在,它会将它添加到String原型中,以便它可用于所有字符串。

您只需将其添加到您在启动时以及尝试使用.startsWith()之前执行的某个位置的JS文件中。

答案 1 :(得分:1)

找到一种更简单的解决方法,

function startsWith(str, word) {
    return str.lastIndexOf(word, 0) === 0;
}

喜欢在代码下方找到结尾,

function endsWith(str, word) {
    return str.indexOf(word, str.length - word.length) !== -1;
}

答案 2 :(得分:0)

我一直在使用这个polyfill:

if (typeof String.prototype.startsWith != 'function') {
    String.prototype.startsWith = function(prefix) {
        return this.slice(0, prefix.length) == prefix;
    };
}

答案 3 :(得分:0)

您可以使用它。它可以与“ Internet Explorer 11”和大多数最新的浏览器一起使用。 此代码的优势之一是,如果默认的“ startsWith”和“ endsWith”可与最新的浏览器一起使用,那么这些功能就可以完成工作。

function startsWith(str, prefix) {
	if (str.length < prefix.length){ 
		return false;
	}	
	if(String.prototype.startsWith) {
		return str.startsWith(prefix);
	}	
	//return str.slice(0, prefix.length) == prefix;
	return str.substring(0, prefix.length) === prefix;	
}
 
function endsWith(str, suffix) {
	if (str.length < suffix.length){
		return false;
	}	
	if(String.prototype.endsWith) {
		return str.endsWith(suffix);
	}
	return str.substring(str.length - suffix.length, str.length) === suffix;	
}    

/* usage */
var myHtml = "<strong>This is html content</strong>";
var myString = "This is simlpe text for test";

if(startsWith(myHtml, "<strong>")){
	console.log("start with <strong>"); 
}
if(startsWith(myString, 'This')){
	console.log("start with 'This'"); 
}

if(endsWith(myHtml, "</strong>")){
	console.log("ends with </strong>"); 
}

if(endsWith(myString, 'test')){
	console.log("ends with 'test'"); 
}

答案 4 :(得分:0)

if (!String.prototype.endsWith) {
    String.prototype.endsWith = function (text) {
        return this.indexOf(text, this.length - text.length) !== -1;
    };
}

if (!String.prototype.startsWith) {
    String.prototype.startsWith = function (text) {
        return this.lastIndexOf(text, 0) === 0;
    };
}