web-dev-qa-db-ja.com

trim()関数はIE8で動作しませんか?

文字列でtrim()関数を使用するときは常に、ChromeおよびFirefoxで正常に動作しますが、IE8で次のエラーが表示されます。

オブジェクトはこのプロパティまたはメソッドをサポートしていません

なぜこれが起こるのか、回避策がある場合は誰にも教えてもらえますか?

28
Mukul

IE8はトリム機能をサポートしていません。ポリフィルは次のとおりです。

if(typeof String.prototype.trim !== 'function') {
  String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/g, ''); 
  };
}
82
nemo

必要に応じて、jqueryを追加して$ .trim(....)を使用できます。これは動作します。

$.trim("  hello ");

あなたにあげる

"hello"
39
Karesh A

Internet Explorerは、バージョン9からtrim()のサポートのみを開始しました。

参考のため、 String.prototype.trim()のMDNポリフィル は次のとおりです。

if (!String.prototype.trim) {
  (function() {
    // Make sure we trim BOM and NBSP
    var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
    String.prototype.trim = function() {
      return this.replace(rtrim, '');
    };
  })();
}

support は次のとおりです。

+--------+---------+----+-------+--------+
| Chrome | Firefox | IE | Opera | Safari |
+--------+---------+----+-------+--------+
| All    | 3.5     |  9 | 10.5  |      5 |
+--------+---------+----+-------+--------+
2
dav_i

以来、@ nemoと@ karesh-aの助けを借りてjQueryを使用していました。

if(typeof String.prototype.trim !== 'function') {
     String.prototype.trim = function(){
        return jQuery.trim( this );
    }
}
0
Amit Bhagat