2011-12-14 4 views
1

Chrome에서 훌륭하게 작동하는 한 줄 기능이 있고 문자열을 짧게하려면 FF이지만 IE에서는 예외가 발생합니다. 누구든지 IE에 대한 해결 방법을 알고 있습니까? 여기 트림이 IE에서 작동하지 않습니까?

내 코드입니다 : 그것은 IE 8 세 이상 IE 9에서 사용할 수 있어야하므로

var name = 'This is a really loooooooooooong string'; 

var shortName = name.trim().substring(0, 10).split(" ").slice(0, -1).join(" ") + "..."; 

alert(shortName); 

감사합니다, - 폴

답변

10

trim이, ECMAScript를 262 5 판을 표준화했다 사용할 수있는 몇 가지 솔루션이 있습니다. 당신이 jQuery를 태그하기 때문에

, 당신은 $.trim(str) 사용할 수 있습니다

$.trim(name).substring(0, 10).split(" ").slice(0, -1).join(" ") + "..."; 

을 또는 당신이 좋아, 심 (shim)을 사용하여 String#trim을 구현할 수있는이 하나

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

다른 trim에 괜찮은 비교도 있습니다 구현 available at Steven Levithan's blog.

+2

jquery가 트림 방법을 가지고 있다는 것을 깨닫지 못했습니다 ... 훌륭한 작품! 덕분에 – Paul

+0

전설! 내 하루를 구했다. Godforsaken IE8. –

1

당신이 하나가 IE, 파이어 폭스, 크롬에서 완벽하게 작동 jQuery.trim()

+0

그가 요구 한 것이 아닙니다. – vsync

+2

@vsync 이전 답변에 대한 Paul의 의견을 참조하십시오. –

+0

죄송합니다. 나는 jquery의 트림이 달성하고자하는 것과 관련이있는 것을 완전히 얻지 못했다고 생각합니다. – vsync

0

를 사용할 수 있습니다

String.prototype.trim = function() { 
     return this.replace(/^\s+/, "").replace(/\s+$/, ""); 
    } 

jQuery를 통해 장점은 문자열의 프로토 타입을 확장하고 당신이 코드를 조정할 필요가 없다는 것입니다 .

편집 : AndyEs 의견에 따라 조정

+0

jQuery.trim의 장점은 이미 jQuery를 사용하고 있다면 쉽게 사용할 수 있다는 것입니다. OP가 [tag : jquery] 태그를 지정한 이후 어느 쪽이 여기에 해당됩니까? –

+0

@Andy thats true. 그러나 그의 예제에서 볼 수 있듯이 String 객체에서 trim()을 사용하고 있습니다. 스크립트가 복잡하다면 스크립트를 조정하는 데 많은 비용이 들며 회귀 문제가 발생할 수 있습니다. – fyr

+0

@AndyE jQuery가 속하지 않은 곳을 스틱하지 않아도됩니다. – zatatatata

관련 문제