Quill 我如何禁用删除并专注于块嵌入

Quill 我如何禁用删除并专注于块嵌入,quill,Quill,我有一个特别的污点,它会延伸到我的身体。我想在此块中禁用焦点和退格删除。这可能吗 import Quill from 'quill'; import { html, render } from 'lit-html' let Block = Quill.import('blots/block'); let BlockEmbed = Quill.import('blots/block/embed'); const template = (text) => html` <img s

我有一个特别的污点,它会延伸到我的身体。我想在此块中禁用焦点和退格删除。这可能吗

import Quill from 'quill';
import { html, render } from 'lit-html'

let Block = Quill.import('blots/block');
let BlockEmbed = Quill.import('blots/block/embed');

const template = (text) => html`
  <img src="https://prosemirror.net/img/dino/tyrannosaurus.png"/>
  <span>${text}</span>`;

export class BlockActionBlot extends BlockEmbed {
  static blotName = 'action';
  static className = 'block-action';
  static tagName = 'div';

  static create({ id, text }) {

    const node = super.create();
    node.dataset.text = text;
    node.dataset.id = id;

    render(template(text), node)

    return node;
  }

    static value(node) {
    return {
      id: node.dataset.id,
      text: node.dataset.text
    }
  }
}
从“纬管”导入纬管;
从'lit html'导入{html,render}
let Block=Quill.import('blots/Block');
让BlockEmbed=Quill.import('blots/block/embed');
常量模板=(文本)=>html`
${text}`;
导出类BlockActionBlot扩展BlockEmbed{
静态名称='action';
静态类名称='块操作';
静态标记名='div';
静态创建({id,text}){
const node=super.create();
node.dataset.text=文本;
node.dataset.id=id;
渲染(模板(文本)、节点)
返回节点;
}
静态值(节点){
返回{
id:node.dataset.id,
text:node.dataset.text
}
}
}

要禁用删除,您可以覆盖
BlockActionBlot
中的
deleteAt()
方法。如下所示。这将防止在印迹水平上删除

export class BlockActionBlot extends BlockEmbed {
   // ...
   deleteAt() { }
}
有关
deleteAt
的签名和提供的其他方法,请参见

要禁用对blot的聚焦,您可以将
用户选择:none
和/或
光标:none
应用于blot。您可能需要在已有的
create
方法中为上述css属性添加一个
class
。您可以使用
node.setAttribute('class','block-action')
来实现这一点,然后将css应用到加载的css中的
div.block-action


另一个选项是尝试截取delete键。我认为这种方法虽然可行,但会更加复杂。

如果您希望blot是“静态”的,我发现最简单的方法是在
创建
方法中将
节点.contentEditable
设置为
false

我希望这会有所帮助,而且在你的情况下,答案不会太晚(我今天遇到了同样的问题)