2011-03-11 15 views
6

Ho testato quanto segue in FF, OP, Chrome, Safari e IE. Funziona in tutti loro, tranne le 3 IE che ho provato: 8, 7 e 6.jQuery .trim() Compatibilità browser IE Domanda

// truncate testimonial 
var visiblePara = $('div.bannerUnder p.show'); 
if (visiblePara.text().trim().length > 150) { 
    var text = visiblePara.text().trim(); 
    var author = $('div.bannerUnder p.show > strong').text(); 
    text = text.substr(0, 150) + "..."; 
    visiblePara.text(text).append("<strong>" + author + "</strong>"); 
} 

Dice:

oggetto non supporta questa proprietà o metodo e punti a questa linea:

if (visiblePara.text().trim().length > 150) { 

Quale potrebbe essere il problema?

+0

@Patrick : 'length' è una proprietà, non una funzione. –

+0

@Chuck: Hai cambiato il titolo in "jQuery .length IE Browser Compatibility Question" ma non si tratta di .length - si tratta di .trim() non disponibile in IE prima della versione 8. – rsp

+0

Buona cattura. Cambierò la funzione in .trim(), ma sto cercando di lasciare il titolo della domanda nel contesto di come inizialmente lo stava chiedendo. –

risposta

19

provare a cambiare:

visiblePara.text().trim().length 

a:

$.trim(visiblePara.text()).length 

È anche possibile spostare la variabile di testo in su, con qualcosa di simile:

// truncate testimonial 
var visiblePara = $('div.bannerUnder p.show'); 
var text = $.trim(visiblePara.text()); 
if (text.length > 150) { 
    var author = $('div.bannerUnder p.show > strong').text(); 
    text = text.substr(0, 150) + "..."; 
    visiblePara.text(text).append("<strong>" + author + "</strong>"); 
} 
+1

grazie per avermi salvato la vita! – James

4

trim non è un metodo di String.prototype fino a IE 8. È presente in altri browser da un po 'di tempo.

L'ho provato in IE8 e ha funzionato per me. Utilizzare jQuery.trim()jQuery.trim(str) invece