我有一个像这样的代码:
var valid = viewName.contains('/');
在 Firefox 浏览器中运行良好。但在 chrome 中它是undefined
. 为什么呢?chrome真的没有这样的字符串方法吗?
可以用indexOf
代替contains
吗,所有浏览器都支持吗?
我有一个像这样的代码:
var valid = viewName.contains('/');
在 Firefox 浏览器中运行良好。但在 chrome 中它是undefined
. 为什么呢?chrome真的没有这样的字符串方法吗?
可以用indexOf
代替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
}
在 Firefox 和 Chrome 中也支持此功能,现在默认情况下已禁用。如果您登陆此处寻找最新答案,您可以在此处查看原因和新方法名称(即String.includes
)。
尝试:
yourString.includes('searchString')
.contains 在 FireFox 48 中被完全删除,因为文档显示,当前最后一次更新是 2016 年 7 月 22 日。不过,函数 .includes 做了 .contains 之前所做的事情。
优点:Chrome 也支持 .includes。
请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes以供参考。
我打算将此作为评论发布,但未注册的人只能写完整的答案。(捂脸)
字符串的contains
方法首先添加到 V8中,然后在30.0.1583.0 版本之后包含在 Chrome中,但默认禁用。仅当您在 中启用“实验性 JavaScript 功能”时,此功能才可用。chrome://flags/#enable-javascript-harmony