在TextField中写入,之前的第一个节点没有从DOM中移除

问题描述 投票:0回答:1

我正在尝试使用初始文本“xyz”将“abc”覆盖到 MathQuill 的 TextField 中

var MQ = MathQuill.getInterface(2);
var mySpan = document.getElementById('A');
var textField = MQ.TextField(mySpan);
textField.latex('abc');
<link href="https://cdnjs.cloudflare.com/ajax/libs/mathquill/0.10.1-a/mathquill.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathquill/0.10.1-a/mathquill.min.js"></script>
<span id="A">xyz</span>

我期待文本字段中出现“abc”。

但是,当我加载页面时,我得到“xabc”。

然后我将光标放在“x”的右侧,然后按退格键,但无法删除第一个节点“x”。

然后我单击“x”并收到以下错误:

Uncaught Error: prayer failed: nodeId is the id of some Node that exists
    at s (mathquill.min.js:10:419)
    at t.seek (mathquill.min.js:10:27378)
    at HTMLSpanElement.<anonymous> (mathquill.min.js:10:27058)
    at HTMLSpanElement.dispatch (jquery.min.js:2:40035)
    at v.handle (jquery.min.js:2:38006)

我认为这意味着“x”已从内部节点映射中删除,但并未从 DOM 中删除。

上面的例子使用MathQuill v0.10.1-a,我尝试了一些旧版本,但仍然看到这个错误。


如果我们在空的首字母

 上调用 
.latex() 两次,然后单击“x”,我仍然会看到此错误。

var MQ = MathQuill.getInterface(2);
var mySpan = document.getElementById('A');
var textField = MQ.TextField(mySpan);
textField.latex('xyz');
textField.latex('abc');
<link href="https://cdnjs.cloudflare.com/ajax/libs/mathquill/0.10.1-a/mathquill.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathquill/0.10.1-a/mathquill.min.js"></script>
<span id="A"></span>

javascript jquery dom mathquill
1个回答
0
投票

https://github.com/mathquill/mathquill/blob/a38bfa0b264bed88870dec3dd2d0cdf8a0f3a2d9/src/services/latex.ts#L340

    root.jQ.children().slice(1).remove();

我不知道为什么

.slice(1)
在那里。

如果

.slice(1)
被删除,我会得到预期的行为。

© www.soinside.com 2019 - 2024. All rights reserved.