我正在使用rangy class applier。 https://github.com/timdown/rangy
applyToRange
创建一个范围,undoToRange
按预期删除它。
但是,如果我修改了span的一个属性,那么undoToRange
不会删除span(虽然它确实删除了类)。如何使用rangy(而不是自定义解决方案)删除跨度?
.myclass {
background-color: rgba(255, 255, 0, 1);
}

<h1>Hello world</h1>
<button onclick="apply()">apply</button>
<button onclick="undo()">undo</button>
<script src="https://cdnjs.cloudflare.com/ajax/libs/rangy/1.3.0/rangy-core.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/rangy/1.3.0/rangy-classapplier.js"></script>
<script>
node = document.getElementsByTagName("h1")[0]
rangy.init();
rangyOptions = {
elementAttributes: { 'data-name': 'hello'},
useExistingElements: false,
};
applier = rangy.createClassApplier("myclass", rangyOptions);
var range = rangy.createRange();
range.selectNode(node);
function apply() {
applier.applyToRange(range);
// if a comment this, then undoToRange does remove the span.
node.getElementsByTagName("span")[0].dataset.name = "world";
}
function undo() {
applier.undoToRange(range);
}
</script>
&#13;