2012-06-27 2 views
28

Всякий раз, когда я использую функцию trim() на строку, он отлично работает с Chrome и Firefox, но я получаю сообщение об ошибке в IE8 говоря:trim() функция не работает в IE8?

Объект не поддерживает это свойство или метод

Can кто-нибудь скажет мне, почему это происходит, и если есть работа вокруг?

+0

http://stackoverflow.com/questions/2308134/trim-in-javascript-not- working-in-ie – ShaggyInjun

+1

Это просто, IE8 не поддерживает его: http://kangax.github.com/es5-compat-table/ – elclanrs

+0

эта ссылка полезна для этой ошибки. [http://stackoverflow.com/questions/2308134/trim-in-javascript-not-working-in-ie][1] [1]: HTTP: // StackOverflow. com/questions/2308134/trim-in-javascript-not-working-in-ie –

ответ

82

IE8 не поддерживает облицовку функция. Вот polyfill:

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

Можете ли вы объяснить, что делает этот фрагмент кода ?, в основном, что это утверждение if. – dwjohnston

+3

Этот фрагмент сначала проверяет, определена ли функция триммера (typeof String.prototype.trim! == 'function') Если он не определен, он определяет функцию, которая является простой заменой регулярным выражением – nemo

+1

http: // stackoverflow.com/a/2308157/1958835 – Igorovics

38

, если вы хотите, вы можете добавить JQuery и использовать $ .trim (....) это будет работать ..

$.trim(" hello "); 

дать вам

"hello" 
+2

Спасибо за этот ответ - гораздо предпочтительнее для сайтов, которые уже используют jQuery. – rcourtna

+0

Спасибо Karesh, jQuery.trim() работал для меня в IE. – Muk

+1

Не обижайтесь, но я думаю, что это нужно делать только тогда, когда мы уже используем javascript. Другое мудрое добавление jquery на сайт только для одной функции выглядит не очень хорошо. Вышеупомянутое решение выглядит более элегантно. –

2

Internet Explorer только начал поддержку trim() с версии 9.

Для справки, MDN Polyfill for String.prototype.trim() является:

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 | 
+--------+---------+----+-------+--------+ 
0

Так как я использую JQuery, с помощью @nemo и @ Кареш-а я придумал:

if(typeof String.prototype.trim !== 'function') { 
    String.prototype.trim = function(){ 
     return jQuery.trim(this); 
    } 
} 
Смежные вопросы