web-dev-qa-db-fra.com

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 j'obtiens une erreur dans IE8:

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

Quelqu'un peut-il me dire pourquoi cela se produit et s'il y a un moyen de contourner le problème?

28
Mukul

IE8 ne supporte pas la fonction trim . Voici un polyfill:

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

si vous voulez, vous pouvez ajouter jquery et utiliser $ .trim (....) Cela fonctionnera ..

$.trim("  hello ");

te donner

"hello"
39
Karesh A

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

Pour référence, le 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
dav_i

Depuis, jutilisais jQuery, avec l’aide de @nemo et @ karesh-a, j’ai trouvé: 

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