如何向 Quill.js 添加新格式(
标签)?

2024-03-21

我想添加一个按钮来添加<hr>标记到quill.js(测试版) http://beta.quilljs.com/docs/quickstart/ editor.

这里的fiddle https://jsfiddle.net/Lgxkj4ag/.

<!-- Initialize Quill editor -->
    <div id="toolbar-container">
        <span class="ql-formats">
          <button class="ql-hr"></button>  //here my hr-button
        </span>
        <span class="ql-formats">
          <button class="ql-bold"></button>
          <button class="ql-italic"></button>
        </span>
    </div>

    <div id="editor">

      <p>Hello World!</p>
      <hr> // this gets replaced by <p> tag automatically *strange*
      <p>Some initial <strong>bold</strong> text</p>
    </div>

我初始化我的编辑器:

 var quill = new Quill('#editor', {
        modules: {
          toolbar: '#toolbar-container'
        },
        placeholder: 'Compose an epic...',
        theme: 'snow'
      });

这里我添加一个<h1>我的编辑器的标签功能非常好用:

  $('.ql-hr').on("click",function(){

      var range = quill.getSelection();      
      var text = quill.getText(range.index, range.length);
      quill.deleteText(range.index, range.length);
      quill.pasteHTML(range.index, '<h1>'+text+'</h1>');
  })

现在我尝试同样的方法<hr>标签,根本不起作用:

  $('.ql-hr').on("click",function(){

      var range = quill.getSelection();      
      quill.pasteHTML(range.index, '<hr>');
  })

the <hr>初始标签div#editor被替换为<p>标签。我添加的按钮功能不起作用<hr>标签,但对于其他标签它也有效。我知道<hr>标签没有实现到 Quill.js,这也是我得到这个控制台输出的原因:

quill:工具栏忽略附加到不存在的格式 hr select.ql-hr

有没有什么办法解决这一问题?


我仍然不知道为什么这个问题被否决,但解决方案如下:

导入嵌入blot https://github.com/quilljs/quill/tree/develop/blots- 重要:不是“阻止”,不是“嵌入”,“阻止/嵌入”!

var Embed = Quill.import('blots/block/embed');

定义一个扩展该 Embed 的新类

class Hr extends Embed {
    static create(value) {
        let node = super.create(value);
        // give it some margin
        node.setAttribute('style', "height:0px; margin-top:10px; margin-bottom:10px;");
        return node;
    }
}

定义您的标签

Hr.blotName = 'hr'; //now you can use .ql-hr classname in your toolbar
Hr.className = 'my-hr';
Hr.tagName = 'hr';


按钮编写自定义处理程序
var customHrHandler = function(){
    // get the position of the cursor
    var range = quill.getSelection();
    if (range) {
        // insert the <hr> where the cursor is
        quill.insertEmbed(range.index,"hr","null")
    }
}

注册您的新格式

Quill.register({
    'formats/hr': Hr
});

使用 HTML 中的正确选择器实例化您的编辑器

var quill = new Quill('#editor', {
    modules: {
        toolbar: { container: '#toolbar-container',
            handlers: {
                'hr': customHrHandler
            }
        }
    },
    theme: 'snow'
});

HTML 部分保持不变。整个


功能可以类似于 格式.

谢谢你,乐于助人的社区。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何向 Quill.js 添加新格式(
标签)? 的相关文章

  • 如何在提交表单之前删除自动数字格式?

    我正在使用 jQuery 插件自动数字 http www decorplanit com plugin 但是当我提交表单时 我无法删除之前字段上的格式POST 我尝试使用 input autonumeric destroy 和其他方法 但它
  • Nodemailer:从未收到问候语

    当尝试使用 Nodemailer 在 Node 内发送电子邮件时 https github com nodemailer nodemailer https github com nodemailer nodemailer 调用sendMai
  • 光滑的旋转木马不工作

    我一直在尝试简单地实现 Slick Carousel 的工作 我已按照 Git 页面上的说明进行操作 https github com kenwheeler slick https github com kenwheeler slick 这
  • 在 JavaScript 中定位提示弹出窗口

    我有一个如下所示的 JavaScript 提示 我想将提示放在屏幕中心 如何使用 javascript 做到这一点 function showUpdate var x var name prompt Please enter your na
  • 单击输入字段会触发窗口调整大小

    我有一个带有徽标 菜单和搜索的标题 当我在桌面上时 我会按该顺序显示所有元素 但如果我的窗口宽度小于 980 像素 菜单会隐藏 有一个切换按钮 并且徽标会与nav并附在徽标之后 如果宽度更大 则徽标将再次分离并附加到 DOM 中的旧位置 w
  • TRACKER:错误TRK0005:无法找到:“CL.exe”。该系统找不到指定的文件

    我尝试在 Windows 8 上的 Node js 项目中执行以下命令 npm 安装 电子邮件受保护 cdn cgi l email protection 但我收到一个错误 我不知道如何处理 TRACKER 错误TRK0005 无法找到 C
  • 仅水平 CSS 视差效果,层数大于 100vw

    如何用水平引导网站仅 CSS 视差效果 要求 仅 CSS 视差 父层必须具有宽度 高度 100vw 100vh 子层的宽度 高度必须 gt 100vw 100vh child layers must visually align 100 w
  • 将 Google 电子表格解析为 Javascript 数组

    我有一个 Google 电子表格 https docs google com spreadsheets d e 2PACX 1vRc8Lx0N wf3f1xAAXkNFUqQjaWPFcde3YjK02gCBqGpUrULwHC6NC0sn
  • 更新 Google 地图流量层而无需重新加载页面

    我的页面中嵌入了 Google 地图 我使用 initMap js 函数来初始化地图 function initMap var map new google maps Map document getElementById t map zo
  • 获得一次性绑定以适用于 ng-if

    这个问题已经被之前问过 https stackoverflow com questions 23969926 angular lazy one time binding for expressions 但我无法让该解决方案发挥作用 所以我想
  • 浏览器默认区域设置 - Intl.DateTimeFormat 与 navigator.language

    在对网站进行编码并格式化日期时 我想使用用户在浏览器中设置的区域设置 例如 如果用户定制了他们的chrome settings languages在 Chrome 中设置为非默认值 这就是我想要使用的值 但是 当我在此类浏览器的控制台中运行
  • JavaScript 访问密码字段值是否被视为存在安全风险?

    如果安全 正确地存储密码是良好的风格和安全性 那么对于要求用户输入密码的网页来说不应该也是如此吗 考虑这个例子
  • (0, eval) () 的作用是什么? [复制]

    这个问题在这里已经有答案了 以下内容来自这个问题 https stackoverflow com questions 14119988 return this 0 evalthis 14120023 14120023 function q
  • ReferenceError 和全局对象

    在浏览器中的 JavaScript 中window是全局对象 这意味着在全局范围内定义的每个变量都是window 那么为什么我会得到这个结果 console log window foo No error logs undefined co
  • toLocaleDateString() 在 Chrome 中如何工作?

    我理解了javascript方法toLocaleDateString 使用的计算机设置 让我们来W3Schools 示例 http www w3schools com jsref tryit asp filename tryjsref to
  • 如何生成 JavaScript 堆栈跟踪? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 关于如何以跨浏览器的方式在 javascript 中生成堆栈跟踪有什么建议吗 较新的浏览器 Chrome 和 Firefox 公开了一个允
  • `ie9` - contenteditable false 在父级可编辑时不起作用

    我正在尝试制作内容可编辑和不可编辑的容器 用户可以通过 3 种方式使用它 他们可以将内容与non editable 他们可以将内容与editable 他们可以在不选择其中之一的情况下放置内容 可编辑 我正在努力实现以下目标 content
  • Javascript:更改输入值时设置光标位置

    当您输入公式时 我试图在我的应用程序中重现类似于 Microsoft Excel Google Sheets 的用户体验 并且您可以使用不同的公式和变量来自动完成下拉菜单 为此 在验证自动完成功能后 我希望能够控制光标的位置 例如 如果我输
  • JavaScript 中最长的通用前缀

    我正在尝试解决 Leet Code 挑战14 最长公共前缀 https leetcode com problems longest common prefix 编写一个函数来查找字符串数组中最长的公共前缀字符串 如果没有公共前缀 则返回空字
  • 如何更改 Shiny 中 navbarPage 折叠的断点

    我想用shiny navbarPage collapsible TRUE 当在小屏幕上查看我的 Shiny 应用程序时 将导航元素折叠到菜单中 默认情况下 当浏览器宽度小于 940 像素时会触发折叠 有什么方法可以改变这一点 以便在稍大的浏

随机推荐

  • 如何在 Android 中找到附近的应用程序用户?

    我正在制作一个应用程序 需要能够找到附近的人 他们是我的应用程序的用户 我看了很多类似问题的答案 似乎我别无选择 只能不断将用户的当前位置上传到服务器 并在必要时获取附近的用户列表 那么我的问题是 1 要获取附近的列表 应该有一些计算距离的
  • Zuul 调用的基本身份验证服务

    我是 Zuul 作为边缘服务器 所以所有请求都经过此边缘服务器 我有一个微服务A A的所有Web服务都受到基本身份验证的保护 我们如何通过Zuul代理来调用A b 的服务呢 我应该为消息添加标头吗 这是我的 Zuul 过滤器 public
  • FullScreenChange 事件不起作用

    我尝试绑定 FullScreenChange 事件 但它不起作用 也许我做错了什么 document bind webkitfullscreenchange mozfullscreenchange fullscreenchange func
  • _1 是 C++0x 的一部分吗?

    我见过two https stackoverflow com questions 4008369 recent answers https stackoverflow com questions 4009530 using 1作为纯 C 0
  • PyArrow 表:过滤行

    我有一个RecordBatch从 Plasma DataStore 中 我可以将其读入pyarrow RecordBatch or a pyarrow Table 我现在尝试在将其转换为 pandas 之前过滤掉行 to pandas 有没
  • 当我没有使用任何广告服务时,应用程序因“IDFA 不正确”而被拒绝

    I use 谷歌分析在我的应用程序中 所以它需要广告支持框架 从昨天开始 当我尝试发布更新时 我的应用程序被拒绝 并显示以下错误消息 亲爱的开发者 我们发现您最近的交货存在一个或多个问题 Zee新闻英语 为了处理您的交货 需要解决以下问题
  • 在 pdf 中添加撤销详细信息,同时签名

    我已经使用 PC 上附加的数字令牌对 pdf 进行了数字签名 使用库 itext Sharp 附加相同的内容 当我在 adobe reader 中打开相同内容时 它显示无法执行撤销 当我看到详细信息时 它显示颁发者证书之一被撤销未检查错误
  • 仅包含数据框中每列的异常值

    我有一个数据框如下 chr leftPos TBGGT 12 try 324Gtt AMN2 1 24352 34 43 19 43 1 53534 2 1 1 9 2 34 15 7 9 18 3 3443 100 4 4 9 3 344
  • 卡夫卡领导者选举什么时候发生?

    Kafka High Level Producer 何时以及多久选举一次领导者 它是在发送每条消息之前执行还是仅在创建连接时执行一次 每个代理都有有关主题 和分区 及其领导者列表的信息 每当新领导者当选或分区数量发生变化时 动物园管理员都会
  • Keras 1.0:获取中间层输出

    我目前正在尝试可视化 Keras 1 0 中中间层的输出 我可以使用 Keras 0 3 实现 但它不再起作用了 x model input y model layers 3 output f theano function x y 但我收
  • 滚动到 div 中的某个元素

    我有一个绝对定位的 div 它充当页面中心的模式窗口 模式窗口可垂直滚动 右侧有一个滚动条 页面本身也可以垂直滚动 右侧有一个滚动条 我希望能够单击链接并使模式窗口滚动到链接的项目 我几乎可以使用 target scrollIntoView
  • 检查后在 Gradle 插件中运行任务

    我在 Groovy 下编写了一个 Gradle 插件buildSrc as package test import org gradle api Plugin import org gradle api Project class Samp
  • Java 精确计算 - 使用选项

    我试图对 JAVA SQL 中精确计算的选项进行一些简洁的概述 到目前为止 我找到了以下选项 使用双打 接受他们的缺点 不行 use BigDecimals 在复杂的公式中使用它们对我来说是有问题的 use String format De
  • 将函数应用于列表中所有数据帧的某些列,然后为列赋值

    类似问题已回答here https stackoverflow com questions 22002838 same function over multiple data frames in r 我有一个数据框列表 即 1000 如下所
  • 增强 qi::rule 上的精神语义动作

    我一直在阅读语义动作 我有一个如下所示的规则 property rule identifier rule gt gt lit L gt gt type specification rule gt gt lit L gt gt alnum g
  • Emacs:如何将杀戮环从系统剪贴板中分离出来?

    默认情况下 Emacs 23 x 似乎会将被删除的内容复制到删除环和系统剪贴板 是否可以将杀戮环和剪贴板分开 例如 ctrl k 将内容放入终止环 cmd x 将内容放入系统剪贴板并保留终止环 这在中讨论过这个线程 http lists g
  • 如何在每个测试方法之前和之后执行sql脚本

    有一个 Sqlspring中的注释允许执行sql测试方法前后的代码 Test Sql init sql Sql scripts clean sql executionPhase Sql ExecutionPhase AFTER TEST M
  • 与 Kotlin 泛型的混淆

    我是 Kotlin 的新手 我正在尝试编写一些相当简单的代码 但是我不知道如何使用泛型来使其工作 我有一个Handler代表事物处理程序的特征 我无法更改处理程序的代码 因为它来自库 trait Handler
  • 当我构建多个 ProductFlavors 时,使用 Facebook SDK INSTALL_FAILED_CONFLICTING_PROVIDER

    我正在构建一个包含多个 Android 应用程序productFlavors 并使用Facebook SDK v4 1进行登录和分享内容 问题是 当我尝试在已安装相同应用程序 但风格不同 的设备上安装应用程序时 会引发错误 它不允许我安装第
  • 如何向 Quill.js 添加新格式(
    标签)?

    我想添加一个按钮来添加 hr 标记到quill js 测试版 http beta quilljs com docs quickstart editor 这里的fiddle https jsfiddle net Lgxkj4ag div sp