如何在 Firefox 中替代 moveStart?
有谁知道如何使用 range.setStart 与 range.moveStart 在 IE 中的工作方式相同?我想在 JS 中实现退格/删除,如下所示:
range.moveStart('character',-1); 范围.deleteContents();
但在火狐浏览器中
Does anybody know how to use range.setStart in the same way as range.moveStart works in IE? I'd like to implement backspace/delete in JS, something like this:
range.moveStart('character',-1);
range.deleteContents();
but in Firefox
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Firefox 以及除 IE <= 8 之外的所有现代浏览器都使用 DOM 范围。没有与 IE 的
TextRange
的moveStart
方法直接类似的方法,并且在一般情况下执行起来很棘手。如果范围在文本节点内而不是在开始处,那就很容易;否则,您需要在文档中向后移动以找到前面的文本节点并将范围移入其中。以下仅适用于单个文本节点:WebKit 和 Firefox 4 具有 modify 方法 < code>Selection 对象 完全解决了问题:
Firefox, along with all modern browsers except IE <= 8 uses DOM Ranges. There's no direct analogue to the
moveStart
method of IE'sTextRange
and it's tricky to do in the general case. If the range is within a text node and not at the start, it's easy; otherwise you'll need to walk backwards in the document to find the preceding text node and move the range into it. The following only works within a single text node:WebKit and Firefox 4 have the modify method of
Selection
objects which solves the problem completely:这是一个扩展选择以覆盖完整单词的函数:
Here’s a function to expand selection to cover full words: