在javascript IE8中设置选择范围
Set selection range in javascript IE8
我正在使用div[contenteditable=true]制作wysiwyg编辑器我想设置一个选择范围,从节点a的偏移量X到节点b的偏移量Y。我在Firefox和IE9上做得很好,代码是:
var range = document.createRange();
range.setStart(selectNode, 0);
range.setEnd(selectNode, selectNode.textContent.length);
var sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(range);
但是在IE8上,范围对象是完全不同的,它没有setStart/setEnd,并且选择对象没有remove/adrange之类的东西。请帮助,
看一下rangy。它是一个跨浏览器范围/选择的API。这可能就是你需要的。
http://code.google.com/p/rangy/我有一个类似的问题,发现这个填充对我很有用,因为我不能在我的情况下使用range:http://bl.ocks.org/visnup/3456262
编辑:原来的链接确实已经死了。回顾我的旧代码,看起来polyfill从未进入发布代码,我们只是按照如下方式进行特征检测:
if(window.getSelection || document.selection){
then on mouseup:
var range;
if(window.getSelection){
var selection = window.getSelection();
range = selection.getRangeAt(0);
} else if(document.selection){
range = document.selection.createRange();
if(!range.surroundContents){
// then give up, feature not fully implemented
}
}
// now do stuff with range (i.e. the selection)
…因此,IE8用户不支持该功能。
然而,一切都没有失去:有一个更新的(比我原来的答案)polyfill在Github上可能工作,如果你必须支持IE8。它看起来既简洁又全面。
相关文章:
- html选择-范围为0-10
- Jquery日期选择器-防止选择范围内的不可用日期
- 在绝对位置设置从 A 到 B 的选择范围
- 如何在选择范围时显示输入范围值
- 选择范围标记中的文本
- 如何让用户在文本中选择范围
- 键入电子邮件不'不支持选择范围
- 为什么选择范围和弹出窗口不能在javascript中一起工作
- 检查指定的元素是否在选择范围内
- 如何更改用户'在UIWebView中的选择范围
- jquery删除粘贴html后的文本选择范围
- 更改jquery的选择范围
- 在javascript IE8中设置选择范围
- 在javascript中获取选择范围的样式
- JavaScript将鼠标位置转换为选择范围
- 是否有一种方法来获得宽度的选择/范围
- 设置复选框选择范围的限制
- jQuery Datepicker beforeShowDay-已选择范围
- 在数字输入中有特定的选择范围
- jquery .js -在jquery .js 0.20.1中无法获得readOnly:true编辑器的选择范围