la fonction trim() ne fonctionne pas dans IE8?

Chaque fois que j'utilise la fonction trim() sur une chaîne, cela fonctionne bien avec Chrome et Firefox mais je reçois une erreur dans IE8 disant:

L'objet ne prend pas en charge cette propriété ou cette méthode

Quelqu'un peut-il me dire pourquoi cela se produit et s'il y a un travail autour?

28
demandé sur dav_i 2012-06-27 09:07:28

4 réponses

IE8 ne prend pas en charge la fonction trim. Voici un polyfill:

if(typeof String.prototype.trim !== 'function') {
  String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/g, ''); 
  };
}
82
répondu nemo 2014-04-25 22:00:40

Si vous le souhaitez, vous pouvez ajouter jquery et utiliser $.coupe(....) cela fonctionne..

$.trim("  hello ");

Vous Donner

"hello"
39
répondu Karesh A 2012-06-27 05:11:10

Internet Explorer n'a démarré la prise en charge de trim() qu'à partir de la version 9.

Pour référence, la MDN Polyfill pour String.prototype.trim() est:

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, '');
    };
  })();
}

Et le support car c'est:

+--------+---------+----+-------+--------+
| Chrome | Firefox | IE | Opera | Safari |
+--------+---------+----+-------+--------+
| All    | 3.5     |  9 | 10.5  |      5 |
+--------+---------+----+-------+--------+
2
répondu dav_i 2015-03-12 16:10:13

Depuis, j'utilisais jQuery, avec l'aide de @nemo et @karesh-a je suis venu avec:

if(typeof String.prototype.trim !== 'function') {
     String.prototype.trim = function(){
        return jQuery.trim( this );
    }
}
0
répondu Amit Bhagat 2017-03-05 09:46:54