Tencent / cherry-markdown

✨ A Markdown Editor
Other
3.57k stars 415 forks source link

使用CDN外部引入初始化控件有部分报错问题 #450

Closed lycoris-xmin closed 1 year ago

lycoris-xmin commented 1 year ago

vue3 vite 打包 CDN配置

        {
          name: 'cherry-markdown',
          var: 'Cherry',
          path: 'https://unpkg.com/cherry-markdown@0.8.19/dist/cherry-markdown.min.js',
          css: 'https://unpkg.com/cherry-markdown@0.8.19/dist/cherry-markdown.min.css'

          // path: 'https://cdn.jsdelivr.net/npm/cherry-markdown@0.8.19/dist/cherry-markdown.min.js',
          // css: 'https://cdn.jsdelivr.net/npm/cherry-markdown@0.8.19/dist/cherry-markdown.min.css'
        }

配置

  options: {
    id: 'cherry-container',
    value: '',
    editor: {
      codemirror: {
        theme: 'default'
      },
      defaultModel: 'edit&preview',
      convertWhenPaste: true
    },
    engine: {
      global: {
        htmlWhiteList: 'iframe|script|style'
      },
      syntax: {
        list: {
          listNested: true
        },
        inlineCode: {
          theme: 'red'
        },
        codeBlock: {
          theme: 'dark', 
          wrap: true,
          lineNumber: true 
        }
      }
    },
    toolbars: {
      theme: 'light ',
      showToolbar: true,
      toolbar: [
        'bold',
        'size',
        'color',
        'header',
        '|',
        'hr',
        'strikethrough',
        '|',
        'code',
        'link',
        'table',
        '|',
        'list',
        {
          insert: ['image', 'audio', 'video', 'line-table', 'bar-table', 'pdf', 'word', 'formula']
        },
        'graph',
        'togglePreview',
        'export'
      ],
      sidebar: [],
      bubble: false,
      float: false
    },
    fileUpload: (file, callback) => {
      emit('fileUpload', file, url => {
        callback(url);
      });
    },
    callback: {}
  }

image

image

初步使用没发现具体影响哪些功能,基础功能还能使用,但是强迫症看到控制台有错误,不知道是否有处理方案

sunsonliu commented 1 year ago

image

目测是这里的问题,去掉就好了(这两个功能目前还没有开源出来)

lycoris-xmin commented 1 year ago

@sunsonliu 另外生成的标题语法貌似没有判断id首位是否为数字的问题,我看生成的结果是直接取的中文标题进行编码后当作锚点定位id,但是实际编写过程中标题可能会附带上数字进行锚点定位时就会出现 类似以下的错误

image

查了一下资料,MDN 上有明确解释:HTML中的ID不能以数字开头

image

sunsonliu commented 1 year ago

收到,我们处理下ID以数字开头的情况~~感谢反馈

lyngai commented 1 year ago

@sunsonliu 另外生成的标题语法貌似没有判断id首位是否为数字的问题,我看生成的结果是直接取的中文标题进行编码后当作锚点定位id,但是实际编写过程中标题可能会附带上数字进行锚点定位时就会出现 类似以下的错误

image

查了一下资料,MDN 上有明确解释:HTML中的ID不能以数字开头

image

实际上在截图中所展示的 HTML 规范,已经说明了对 ID 的格式没有任何限制,包括以数字开头。

image

您代码中产生的错误是因为 CSS 选择器在查询以数字开头的 class / id 时必须转义,这点在文档中也有说明。

image

建议使用 getElementById 规避类似错误,或在使用 querySelector 时按照规范对 id 部分进行转义(escape)。例:

document.querySelector(`#${CSS.escape('123')}`)