我有这样的一段代码:
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
}
.contains()
更改为.includes()
。 .contains()
最终将从Firefox中删除,并用标准的.includes
替换。目前,Chrome提供.includes
。 - Ray Suelzer现在,Firefox和Chrome都默认禁用了此功能。如果您正在查找最新答案,可以在此处查看原因以及新的方法名称(即String.includes
)。
尝试:
yourString.includes('searchString')
根据最近更新于2016年7月22日的文档,FireFox 48完全移除了.contains函数。然而,.includes函数可以实现.contains的功能。
优点:.includes也被Chrome支持。
请参考https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes。
我原本想以评论的形式发布这篇文章,但未注册的用户只能发布完整答案。(facepalm)
contains
方法最初是在 V8 中 首次添加,然后在 Chrome 版本 30.0.1583.0 之后 包含,但默认情况下被禁用。只有在您启用 "实验性 JavaScript 功能" 的情况下,此功能才可用于 chrome://flags/#enable-javascript-harmony
。
.includes
。 - Ray Suelzer