var range = document.createRange(refNode);
1. 调用 range.setEndAfter() 或者 range.setEndBefore() 方法,之前没有调用 setStartAfter(),或者 setStartBefore() 方法,程序会报错。
2. 调用 setStartAfter(),或者 setStartBefore() 方法,之后,没有调用 range.setEndAfter() 或者 range.setEndBefore() 方法,会直接产生范围折叠。
原文:http://blog.csdn.net/liveinjs/article/details/37730291