我想创建一个自定义嵌入格式,可以设置样式,但它的文本无法更改.我的用例非常类似于标签的情况.我想有一个外部按钮,它会在编辑器上为当前选定的范围添加一个#标签.但是在这样做之后我希望hashtag表现为"块",这样用户就不能去那里并改变它的文本.
我能做到这一点的唯一方法是说格式的节点是contenteditable = false但是我不确定我是否正确的方式,因为我对这种方法有一些问题,主要是:
如果主题标签是编辑器中的最后一个东西我无法移动它(用箭头或光标)双击它以选择应该选择整个事物(而不是单个单词)(用于样式)如果光标紧跟在标签后面,按下右键并写入将在主题标签内写入您可以检查我在尝试此时所做的代码:
Quill.import('blots/embed');
class QuillHashtag extends Embed {
static create(value) {
let node = super.create(value);
node.innerHTML = `<span contenteditable=false>#${value}</span>`;
return node;
}
}
QuillHashtag.blotName = 'hashtag';
QuillHashtag.className = 'quill-hashtag';
QuillHashtag.tagName = 'span';
Run Code Online (Sandbox Code Playgroud)
这是完整的代码:http://codepen.io/emanuelbsilva/pen/Zpmmzv
如果你们能给我任何关于如何实现这一目标的提示,我会很高兴的.
谢谢.
假设我想要一个AtomicText类似于默认Link印迹的印迹,但它是不可变的,只能作为一个整体去除.进一步来说:
AtomicText.AtomicText.AtomicText导致删除整体AtomicText.AtomicText创建后无法添加字符.既不通过键盘事件也不通过复制和粘贴.我的想法是AtomicText从Embed印迹中扩展.在这种情况下,AtomicText当光标位于其最后一个字符并且按下退格键时,将删除整个印迹.但其他操作无法按预期工作.我假设我需要覆盖一些Blot方法来实现正确的行为,但我在这里有点不知所措.
另一个想法是监听text-change事件,确定光标是否在AtomicText污点内并相应地采取行动.例如,当按退格键时,找到当前AtomicText印迹的开始和结束位置,并删除这些索引之间的所有字符.这似乎是一种脆弱的方法.
任何指针将不胜感激.
类似的问题/要求如下:
quill ×2