15

我有一个像这样的代码:

var valid = viewName.contains('/');

在 Firefox 浏览器中运行良好。但在 chrome 中它是undefined. 为什么呢?chrome真的没有这样的字符串方法吗?

可以用indexOf代替contains吗,所有浏览器都支持吗?

4

4 回答 4

40

String.contains() 的浏览器兼容性

String.indexOf()是我使用的,它会正常工作。

  var strIndex = viewName.indexOf('/');
  if(strIndex == -1) {
     //string not found
  } else {
    //string found
  }

但是,以防万一你想拥有一个contains()功能,你可以将它添加到String如下:

 if(!('contains' in String.prototype)) {
       String.prototype.contains = function(str, startIndex) {
                return -1 !== String.prototype.indexOf.call(this, str, startIndex);
       };
 }

var valid = viewName.contains('/');
if(valid) {
  //string found
} else {
  //string not found
}
于 2013-10-05T10:03:05.890 回答
9

在 Firefox 和 Chrome 中也支持此功能,现在默认情况下已禁用。如果您登陆此处寻找最新答案,您可以在此处查看原因和新方法名称(即String.includes)。

尝试:

yourString.includes('searchString')

于 2016-04-22T12:01:38.320 回答
2

.contains 在 FireFox 48 中被完全删除,因为文档显示,当前最后一次更新是 2016 年 7 月 22 日。不过,函数 .includes 做了 .contains 之前所做的事情。

优点:Chrome 也支持 .includes。

请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes以供参考。

我打算将此作为评论发布,但未注册的人只能写完整的答案。(捂脸)

于 2016-09-11T10:30:31.933 回答
1

字符串的contains方法首先添加到 V8中,然后在30.0.1583.0 版本之后包含在 Chrome中,但默认禁用。当您在 中启用“实验性 JavaScript 功能”时,此功能才可用。chrome://flags/#enable-javascript-harmony

于 2014-03-26T09:40:40.373 回答