Javascript 什么、如何以及何时使用静态格式、自定义blot上的格式和格式? 描述
我试图创建一个内联的文字突出显示污点。我知道用羽毛笔。但是在我的实现中,我希望根据所分配的突出显示类型为html元素分配不同的值。以下是我得到的:Javascript 什么、如何以及何时使用静态格式、自定义blot上的格式和格式? 描述,javascript,wysiwyg,quill,Javascript,Wysiwyg,Quill,我试图创建一个内联的文字突出显示污点。我知道用羽毛笔。但是在我的实现中,我希望根据所分配的突出显示类型为html元素分配不同的值。以下是我得到的: let Inline = Quill.import('blots/inline'); class TextHighlight extends Inline { static create(value) { let node = super.create(); if(!value || value < 1
let Inline = Quill.import('blots/inline');
class TextHighlight extends Inline {
static create(value) {
let node = super.create();
if(!value || value < 1) return node;
if(value == 5){
node.style.color = 'rgb(225, 225, 225)';
}
else {
node.style.borderRadius = '2px';
node.style.padding = '2px';
if(value == 1){ node.style.background = 'rgb(254, 255, 171)'; }
if(value == 2){ node.style.background = 'rgb(255, 171, 171)'; }
if(value == 3){ node.style.background = 'rgb(171, 207, 255)'; }
if(value == 4){ node.style.background = 'rgb(178, 255, 171)'; }
}
node.setAttribute('data-value' , value);
return node;
}
formats() {
console.log('#formats()');
let result = this.domNode.getAttribute('data-value');
return result ? result : 0;
}
}
TextHighlight.blotName = 'texthighlight';
TextHighlight.tagName = 'span';
问题
...
{
"attributes": {
"texthighlight": "3"
},
"insert": "highlighted text"
},
...
预期的行为是只有一个高亮显示
:返回由domNode表示的格式。当索引在格式化范围内时对选择事件调用静态格式(节点)
:返回此污点表示的格式。它用于生成增量。当索引在格式化范围内时对选择事件调用formats()
:将格式应用于此污点格式(格式,值)
formats()
和create(value)
。我知道这些方法中的每一种都是如何实现的,但是我没有得到想要的行为。我想这是因为我不知道如何准确地实现它们。有人能回答我他们到底在做什么,什么时候被呼叫,以及他们应该如何行动(被实现)
谁能帮帮我吗(编辑(2019年12月18日)
所以…经过几个小时的研究,我终于能够使编辑器更正确一些。在整个故事中,我最终创建了一个blot,它能够根据传递给formatting的值,以不同的样式格式化文本。您甚至可以通过提供或省略值来删除格式化
我终于能够得到第2项的答案,正如我所想,我在工具栏模块中找到了答案。关于格式方法及其差异,我想我可以更好地理解它。我仍然不明白为什么经常调用格式。我想我会从quill core中找到答案,但是……quill source code非常大,因为它涉及多个文件
我在这里提供了前面显示的代码的更新版本。所有代码都经过了注释,有利于希望了解更多有关如何:
格式
和静态格式(domNode)
之间有什么区别
观察代码执行情况,它们会被调用几次,而静态格式(domNode)
会被调用两次。这正常吗?我不知道,这就是我问的原因中高亮显示SelectedText(hl)
,为什么hl显示为
一个错误的值?这是怎么发生的创建。当
当它被删除时,format(format,value)
被调用。有一些代码片段(格式内部)从未被访问过。不应该应用
删除格式是一项仅限于格式的工作?为什么我必须更改
DOM元素位于两个不同的位置
var toolbarOptions = {
container: '#toolbar-container',
handlers: {
'texthighlight': function (value) {
highlightSelectedText(value);
}
}
};
var quill = new Quill('#editor', {
theme: 'bubble',
modules: {
toolbar: toolbarOptions
}
});
...
{
"attributes": {
"0": "3"
},
"insert": "highlighted text"
},
...
...
{
"attributes": {
"texthighlight": "3"
},
"insert": "highlighted text"
},
...