在 TinyMCE 5 编辑器中添加 "rel"-attribute 到 img 标签

Add "rel"-attribute to img tag in TinyMCE 5 editor

我搜索了一个解决方案,可以自动为每个添加到 TinyMCE 5 编辑器中的图像添加一个“rel-attribute”。所以 html 标签应该是这样的:

<img class="imageborder" src="https://xy.jpg" rel="lightbox" width="500" height="333" />

我已经试过了,但是没有添加。这是 JSFiddle.

tinyMCE.init({
    selector: '#myTextarea',
    plugins: 'code image autolink link lists charmap print preview textcolor',
    toolbar: 'code image link | undo redo | insert | ',
    menubar: false,
    min_height: 300,
    image_class_list: [
        { title: 'imageborder', value: 'imageborder' },
    ],
    image_rel_list: [
        { title: 'lightbox', value: 'lightbox' },
    ],
    setup: function (ed) {
        ed.on("keyup", function () {
            $('#preview').html(tinymce.activeEditor.getContent());
        });
    }
});

您可以将 rel 添加到 link 而不是像这样的图像:

    tinyMCE.init({
    selector: '#myTextarea',
    plugins: 'code image autolink link lists charmap print preview textcolor',
    toolbar: 'code image link | undo redo | insert | ',
    menubar: false,
    min_height: 300,
    image_class_list: [
        { title: 'imageborder', value: 'imageborder' },
    ],
    rel_list: [
             {title: 'lightbox', value: 'lightbox'},
            {title: 'Other rel', value: 'otherrel'}
        ],
    setup: function (ed) {
        ed.on("keyup", function () {
            $('#preview').html(tinymce.activeEditor.getContent());
        });
    }
});

它在此处的文档中:https://www.tiny.cloud/docs/plugins/opensource/link/#exampleusingrel_list

然后使用 a rel 作为灯箱 link,而不是图像。

您可以在 NodeChange 事件中获取 img 元素。

文档: https://www.tiny.cloud/docs-4x/advanced/events/#nodechange

Jsfiddle: https://jsfiddle.net/aswinkumar863/L48jdqzs/

tinyMCE.init({
  ...
  setup: function(ed) {
    ed.on("keyup", function() {
      $('#preview').html(tinymce.activeEditor.getContent());
    });
    ed.on('NodeChange', function(e) {
      e.element.parentNode.querySelectorAll('img:not([rel=lightbox])').forEach(img => {
        img.setAttribute('rel', 'lightbox');
      });    
    });
  }
});