gpt4 book ai didi

javascript - 如何在 Firefox 中交替使用 moveStart?

转载 作者:行者123 更新时间:2023-11-30 06:07:03 25 4
gpt4 key购买 nike

有谁知道如何像 range.moveStart 在 IE 中一样使用 range.setStart 吗?我想在 JS 中实现退格/删除,像这样:

range.moveStart('字符',-1);范围.deleteContents();

但在 Firefox 中

最佳答案

Firefox 以及除 IE <= 8 之外的所有现代浏览器都使用 DOM Ranges .与 IE 的 TextRangemoveStart 方法没有直接的类比,在一般情况下很难做到。如果范围在文本节点内而不是开头,那很容易;否则您需要在文档中向后走以找到前面的文本节点并将范围移动到其中。以下仅适用于单个文本节点:

function backspace() {
var sel = window.getSelection();

// If there is a selection rather than a caret, just delete the selection
if (!sel.isCollapsed) {
sel.deleteFromDocument();
} else if (sel.rangeCount) {
var range = sel.getRangeAt(0);
if (range.startContainer.nodeType == 3 && range.startOffset > 0) {
range.setStart(range.startContainer, range.startOffset - 1);
sel.removeAllRanges();
sel.addRange(range);
sel.deleteFromDocument();
}
}
}

WebKit 和 Firefox 4 有 modify method of Selection objects这完全解决了问题:

function backspace2() {
var sel = window.getSelection();

// If there is a selection rather than a caret, just delete the selection
if (!sel.isCollapsed) {
sel.deleteFromDocument();
} else if (sel.rangeCount && sel.modify) {
sel.modify("extend", "backward", "character");
sel.deleteFromDocument();
}
}

关于javascript - 如何在 Firefox 中交替使用 moveStart?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3657210/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com