2011-12-14 3 views
1

私はChromeでうまく機能する1行の関数を持ち、文字列を短くするには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); 

おかげで、 -Paul

答えて

10

trimは、ECMAScriptの262第5版で標準化されましたあなたに利用可能な解決策のいくつかです。

あなたはjQueryのをタグ付けするので、あなたは$.trim(str)を使用することができます。

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

また、あなたはシムを使用してString#trimを実装することができ、この1のように:

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

あなたはこの1つはIE、Firefoxの、Chromeで完璧に動作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

関連する問題