JavaScript endsWith在IEv10中不起作用?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript endsWith在IEv10中不起作用?相关的知识,希望对你有一定的参考价值。

我正在尝试使用endsWith()比较javascript中的两个字符串

var isValid = string1.endsWith(string2);

它在Google Chrome和Mozilla中运行良好。来到IE时它会抛出一个控制台错误,如下所示

SCRIPT438: Object doesn't support property or method 'endsWith' 

我该如何解决?

答案

IE中不支持方法endsWith()。检查browser compatibility here

您可以使用从MDN documentation获取的polyfill选项:

if (!String.prototype.endsWith) {
  String.prototype.endsWith = function(searchString, position) {
      var subjectString = this.toString();
      if (typeof position !== 'number' || !isFinite(position) 
          || Math.floor(position) !== position || position > subjectString.length) {
        position = subjectString.length;
      }
      position -= searchString.length;
      var lastIndex = subjectString.indexOf(searchString, position);
      return lastIndex !== -1 && lastIndex === position;
  };
}
另一答案

我找到了最简单的答案,

您所需要做的就是定义原型

 if (!String.prototype.endsWith) {
   String.prototype.endsWith = function(suffix) {
     return this.indexOf(suffix, this.length - suffix.length) !== -1;
   };
 }
另一答案

扩展本机JavaScript对象的原型通常是不好的做法。看到这里 - Why is extending native objects a bad practice?

你可以使用这样一个跨浏览器的简单检查:

var isValid = (string1.lastIndexOf(string2) == (string1.length - string2.length))

以上是关于JavaScript endsWith在IEv10中不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

PHP中的startsWith()和endsWith()函数

IE10 使用 CORS 时不发送 cookie

C# (String.StartsWith && !String.EndsWith && !String.Contains) 使用列表

endswith()方法

无法使用带有 Name.EndsWith 的反射在 C# 中找到接口

Python的startswith与endswith函数