15

私は次のようなコードを持っています:

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

これは、Firefox ブラウザーで正常に動作します。しかし、クロムではそうですundefined。どうしてこんなことに?クロムには文字列用のそのようなメソッドがないというのは本当ですか?

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 は、現在 2016 年 7 月 22 日に最終更新されたドキュメントが示すように、FireFox 48 で完全に削除されました。ただし、関数 .includes は、以前に .contains が行っていたことを行います。

利点: .includes は Chrome でもサポートされています。

リファレンスについては、 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includesを参照してください。

これをコメントとして投稿するつもりでしたが、未登録の人は完全な回答しか書くことができません. (フェイスパーム)

于 2016-09-11T10:30:31.933 に答える