選択範囲の文字列取得

getSelection = function() {
  var s = document.selection ? document.selection.createRange() : window.getSelection();
  s.str = function() {
    return document.selection ? this.text : this.toString();
  };
  getSelection = function() {
    return s;
  };
  return getSelection();
};

IEとFirefox両方で動く関数です。

getSelection(); // 選択範囲のオブジェクト取得
getSelection().str(); // 選択範囲の文字列取得

文字列欲しいだけなら、これで十分ではないかと。

追記

上のはIEじゃ正常に動きませんでした。
新しいレンジオブジェクトを取得できてませんでした。
ゴメンナサイ

/* firefoxの場合 */
getSelection() === window.getSelection() // true

/* IEの場合 */
getSelection() === document.selection.createRange() // false

正しくは、

getSelection = function() {
  return document.selection ? document.selection.createRange() : window.getSelection();
};

と、document.selection.createRange()を毎回評価しなきゃいけないんですね。
最初の実行時にだけブラウザ判別しようとしたのが裏目に出てました。トホホ