2012-01-19 23 views
1

私は、Operaがテキストエリア内の新しい行を\n\rとみなしていることを理解します。そしてIEのいくつかのバージョン。 テキストエリア内でEnterキーを押すと、新しい行が得られます\n\rブラウザの「改行」の表現に2文字が含まれているかどうかを検出するにはどうすればよいですか?

他のブラウザでは、新しい行はただ\nです。

スクリプトでこれを検出するにはどうすればよいですか?

私はwindow.operaを使用してブラウザがOperaかどうかを調べることができますが、実際のブラウザではなくブラウザの機能を検出しようとする人がいます。

+0

なぜ知りたいですか? –

+0

bc私は 'setSelectionRange(a、b)'を使ってテキストエリアの一部を選択しようとしており、 'a 'を正しく判別する必要があります – Alex

+0

あなたはどの部分を選択しようとしていますか? 'a'や' b'や、選択されているテキストとその場所について特別なことはありますか?あなたがマッチさせようとしているパターンに応じて別の方法があるかもしれません。 –

答えて

2

が、専用のテキストエリアの作成が必要とされていない、あなたは、それがそれに任意の改行を持っているとして、対象のテキストエリアでこれを決定することができますように私に起こりました。そうでない場合は、あなたの範囲に影響しないことを知らない。その後、

<textarea id="yourEditor">foo 
bar 
bing 
baz</textarea> 

<script type="text/javascript"> 
function newlineSize() { 
    var val = document.getElementById('yourEditor').value; 
    var len = 0; 
    if (1 < val.split("\r").length) { 
     len++; 
    } 
    if (1 < val.split("\n").length) { 
     len++; 
    } 
    return len; 
} 
</script> 

<input type="button" onclick="alert(newlineSize());" value="test"> 

それをテストこれはあなたのテキストエリア内の改行の幅を警告/返します。

+0

これは正しい方法です。私は、この種のアプローチを、この質問の下のコメントで述べました。 –

2

どのようにしてを確認する必要がありますか?です。私は誰かが願っていますが、誰もしない場合はどうすればあなたはそのことについてをテストできるか考えています。改行を含む既知の値を持つテキストエリアを追加(ハードコード)し、その長さを確認します。

<textarea style="visibility:hidden" id="newlineTest">foo 
bar</textarea> 

(「バー」を含む)二行目は何のインデント/先頭の空白/タブを持っていないことを確認し、その後、

<script type="text/javascript"> 
function newlineSize() { 
    var len = document.getElementById('newlineTest').value.length; 
    alert(len); 
    if (8 == len) { 
     return 2; 
    } else if (7 ==len) { 
     return 1; 
    } else { 
     return null; //unknown condition 
    } 
} 
</script> 

<input type="button" onclick="alert(newlineSize());" value="test"> 

当然アラートを捨てて、それを保存したいと思い、それをテストvar。 IE8(XP)が2を返しました。

+0

これはおそらく、テキストエリアにエディタが使用する改行文字。 – timing

+0

@timing:続かない。これにはチャンスがあります。 –

4

最新のOperaとIE 7以降では、以下のように動作しています(つまり、trueを返します)。しかし、これは古いバージョンではテストされておらず、私は不必要と思われます。質問に関する私のコメントを参照してください。

更新:@Umbrellaからのコメントのおかげで改善されました。私の他の回答と同様に

var textarea = document.createElement("textarea"); 
textarea.value = "\n"; 
var twoCharLineBreaks = (textarea.value == "\r\n"); 
alert(twoCharLineBreaks); 
+0

私のアイデアよりもはるかにクリーンなので、私はこれが好きですが、IEでテストすると偽陰性を返しています。 – Umbrella

+0

2行目を 'textarea.value =" \ n ";"に置き換えると、期待される結果が得られるようです。 – Umbrella

+0

@ Umbrella:あなたのバージョンは 'value'を使う方が良いです。私はそれがうまくいかないと思っていたが、それはそう思われるので、私はそれを変更するだろう。ありがとう。 –

関連する問題