入力フォームのテキストエリアに、ブロックインデントなどの機能を追加するためには、現在の選択範囲を正しく取得する必要があります。selectionStart, selectionEndプロパティがサポートされていれば話は簡単なのですが、IEはサポートされていません。IEではTextRangeオブジェクトを使うのですが、このtextプロパティは選択範囲末尾の改行を削除してしまうという変わった仕様のため、単純なやり方だと、1行目の行末と2行目の行頭を区別することができません。これらを考慮して、正しい選択範囲をとれるコードを書きました。 処理の流れは次の通りです。 selectionStart プロパティがあれば selectionStart と selectionEnd を返す 選択範囲のTextRangeオブジェクトを取得する(selectedRange) 選択範囲より前の部分のTextRan