и это тоже уже читал. читал и рыдал. от того что в разных браузерах разные методы ведут себя порой по-разному, уж извините за тавтологию)
к примеру, солнышко наше, firefox, раздвигает границы существующего range'а автоматически при изменении собственно границ, однако, надежда наша на светлое будущее, chrome, делает это только после select.addRange. но это пол беды. наша модница, opera, вообще на это болт ложит (уж не знаю почему). "Мама! Она меня игнорирует!!!" методы setStartBefore, setStartAfter, setEndBefore, setEndAfter опять же ведут себя изредка непредсказуемо, что страшно нервирует.