加入收藏 | 设为首页 | 会员中心 | 我要投稿 焦作站长网 (https://www.0391zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 云计算 > 正文

Quill编辑器插入自定义HTML记录的示例详解

发布时间:2020-11-06 14:45:34 所属栏目:云计算 来源:互联网
导读:这篇文章主要介绍了Quill编辑器插入自定义HTML记录的示例详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

static transformValue(value) {
      let handleArr = value.split('n')
      handleArr = handleArr.map(e => e.replace(/^[s]+, '')
        .replace(/[s]+$/, ''))
      return handleArr.join('')
    }

// 返回节点自身的value值 用于撤销操作
    static value(node) {
      return node.innerHTML
    }
  }
  // blotName
  AppPanelEmbed.blotName = 'AppPanelEmbed';
  // class名将用于匹配blot名称
  AppPanelEmbed.className = 'embed-innerApp';
  // 标签类型自定义
  AppPanelEmbed.tagName = 'div';
  Quill.register(AppPanelEmbed, true);
}

接下来你只需要这样调用,便可以在编辑器中插入自定义的HTML块:

quill.insertEmbed(quill.getSelection().index || 0, 'AppPanelEmbed', `
          <div>    
              自定义面板标题
          </div>
          <div>    
              自定义面板内容
          </div>
          <div>    
              footer
          </div>
      `);

传参格式要求如下:

insertEmbed(index: Number, type: String, value: any, source: String = 'api'): Delta

这里仅仅这是个简单的示例,如果想丰富自定义Blot的功能,可以参照: https://github.com/quilljs/parchment#blots

由于contenteditable属性放开,为了防止造成xss攻击,所以需要我们对该属性做特殊的过滤处理,这里以xss模块处理为例:

handleWithXss(content) {
      const options = {
        whiteList: {
         ...
          div: ['class', 'style', 'data-id','contenteditable'],
         ...
        },
        css: {
          whiteList: {
            color: true,
            'background-color': true,
            'max-width': true,
          },
        },
        stripIgnoreTag: true,
        onTagAttr: (tag, name, value, isWhiteAttr) => {
          // 针对div的contenteditable 处理
          if (isWhiteAttr && tag === 'div' && name === 'contenteditable') {
            return 'contenteditable="false"';
          }
        },
      } // 自定义规则
      const myxss = new xss.FilterXSS(options)
      return myxss.process(content)
    }

到此这篇关于Quill编辑器插入自定义HTML记录的文章就介绍到这了,更多相关Quill编辑器自定义HTML内容请搜索脚本之家以前的文章或继续浏览下面的相关文章,希望大家以后多多支持脚本之家!

(编辑:焦作站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读