如何在Quill.js中使非可选的嵌入自定义格式

伊曼纽布西尔瓦

我想创建一个可以样式化的自定义嵌入格式,但是其文本无法更改。我的用例与标签用例非常相似。我希望有一个外部按钮,它将在编辑器上的当前选定范围内添加一个标签。但是在执行此操作之后,我希望主题标签表现为“块”,以便用户无法前往那里并更改其文本。

我能做到这一点的唯一方法是说格式的节点为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';

这是完整的codepen:http ://codepen.io/emanuelbsilva/pen/Zpmmzv

如果你们能给我有关如何完成此操作的任何提示,我将很高兴。

谢谢。

哈默德

您需要做的就是在主跨度上将contenteditable属性设置false当前,您正在嵌套跨度上执行此操作。

node.setAttribute('contenteditable', false);

我修改了您帖子中主题标签代码并应用了更改。

var Embed = Quill.import('blots/embed');
class QuillHashtag extends Embed {
  static create(value) {
    let node = super.create(value);
    node.setAttribute('contenteditable', false);
    node.innerHTML = value;
    return node;
  }
}
QuillHashtag.blotName = 'hashtag';
QuillHashtag.className = 'quill-hashtag';
QuillHashtag.tagName = 'span';

Quill.register({
  'formats/hashtag': QuillHashtag
});

var quill = new Quill('#editor-container', {
  modules: {
    toolbar: [
      [{
        header: [1, 2, false]
      }],
      ['bold', 'italic', 'underline'],
      ['image', 'code-block']
    ]
  },
  placeholder: 'Compose an epic...',
  theme: 'snow' // or 'bubble'
});


document.getElementById('b').addEventListener('click', () => {
  var range = quill.getSelection();
  if (range) {
    var hashtag = prompt("Select hashtag", "foobar");
    quill.insertEmbed(range.index, 'hashtag', hashtag);
  }

});
#editor-container {
  height: 375px;
}

.quill-hashtag {
  background-color: lightgray;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/quill/1.3.1/quill.snow.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/quill/1.3.1/quill.min.js"></script>
<div id="editor-container"></div>
<button id="b">add hashtag</button>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Quill JS中添加图像?

如何在Quill.js中创建自己的格式按钮?

如何在 sqlite3 中使用 quill?

如何在DynamoDB中保存Quill.js Delta

如何在Quill JS上保留空白,同时保持从Microsoft Word复制/粘贴的格式?

如何在 Vue.js 中使用 Quill 文本编辑器作为组件

如何在编辑器外部将Quill文本格式化为HTML?

如何在Quill JS(反应羽毛笔)中创建撤消/重做按钮?

如何在quill.js编辑器中添加内联注释?

如何在Python的协议缓冲区中使用包含自定义格式定义的消息

如何在Excel中使用自定义格式将数字从###########更改为####。##。##。##?

如何在Hugo中使用自定义输出格式创建易于打印的模板

如何在magento中使用foreach循环添加自定义UL LI格式

如何在QWebEngineView或页面中嵌入自定义QWidget?

如何在rails中自定义状态嵌入json?

如何在自定义非管理员模型中使用“ set_password”?

如何在 Django 中使用序列化程序返回自定义的非模型值?

如何为UIViewController自定义子类创建非可选的存储属性

简洁的评估:如何在依赖于%>%管道的自定义函数中使用dplyr :: na_if作为可选参数

如何在angular 6中使用自定义指令渲染动态生成的嵌入式SVG

如何在 discord.py 嵌入中使用自定义表情符号,如下图所示:

如何自定义嵌入Soundcloud轨道?

如何使用Quill格式化文本并嵌入视频?

如何在.NET中使用自定义格式对TimeSpan对象进行String.Format格式化?

如何在PyCharm中自定义代码格式?

如何在Java中实现自定义日期格式?

如何在ProxySQL中自定义错误日志格式?

如何在Mapbox GL JS自定义样式层中使用u_time

如何在Handlebars.js块中使用和设置自定义变量?