code-farmer-i / vue-markdown-editor

A markdown editor built on Vue
https://code-farmer-i.github.io/vue-markdown-editor/
MIT License
1.09k stars 109 forks source link

使用preview, 图片不显示 #259

Closed six-u closed 1 year ago

six-u commented 1 year ago

因为图片地址是国外的,所以国内网络访问不成功。 预期是可以显示一张图片加载失败的默认图标, 像这样 image

但因为解析的时候 加入了 alt属性,同时因为alt属性为空,chrome和edge 都不显示图片,宽度为0 image

示例图片:

当图片链接没有alt属性值的时候,可以不添加这个属性吗

six-u commented 1 year ago

md 写法: ![](https://cdna.artstation.com/p/assets/images/images/015/647/758/large/alexandr-zhilkin-h06.jpg)

code-farmer-i commented 1 year ago

内部使用markdown-it作为markdown解析器,在相关issue中也有关于这个的讨论:https://github.com/markdown-it/markdown-it/issues/885 但近期看来不会有改动,目前看来只能通过编写markdown-it的插件来修改其默认的图片解析规则

six-u commented 1 year ago

内部使用markdown-it作为markdown解析器,在相关issue中也有关于这个的讨论:markdown-it/markdown-it#885 但近期看来不会有改动,目前看来只能通过编写markdown-it的插件来修改其默认的图片解析规则

感谢

six-u commented 1 year ago

我这样处理了一下,将就用:

   import VMdPreview from "@kangc/v-md-editor/lib/preview";

    // 自定义markdown-it的图片渲染,去除alt属性,避免图片加载失败时,不显示破裂图标
    VMdPreview.use(imgPlugin);
    function imgPlugin(e: any) {
      e.vMdParser.extendMarkdown((mdParser: any) => {
        mdParser.use(function (md: any) {
          const wrap =
            (wrapped: any) =>
            (...args: any[]) => {
              const rawCode = wrapped(...args);
              return rawCode.replace(‘alt=""’, "");
            };
          const { image } = md.renderer.rules;
          md.renderer.rules.image = wrap(image);
        });
      });
    }