Атрибуты удаляются в коде HTML

Я использую wysihtml5. Когда вы вставляете изображение

<img alt src="src" media_img_id="123" data-title="title" data-author="author" />

Результат

<img alt src="src" />

Правила для img

"img": {
    "remove": 0,
        "check_attributes": {
            "width": "numbers",
            "alt": "alt",
            "src": "url", // if you compiled master manually then change this from 'url' to 'src'
            "height": "numbers",
    "media_img_id": "numbers"
        },
        "add_class": {
            "align": "align_img"
        }
    },

Как сделать так, чтобы атрибуты вообще не удалялись?

1 ответ

Решение

У меня сегодня та же задача расширить возможности этого редактора. Вы должны добавить свои атрибуты в специальный объект: я использую дополнительно bootstrap3-wysihtml5 - https://github.com/schnawel007/bootstrap3-wysihtml5. Объект, который должен быть добавлен с новыми атрибутами для элемента:

var defaultOptions = $.fn.wysihtml5.defaultOptions = { 
  /../

  "img": {
    "check_attributes": 
          {
      "width": "numbers",
      "alt": "alt",
      "data-encid": "alt", <<-here is my custom attribute
      "src": "url",
      "height": "numbers"
      }
    },

 /../
}

и в wysihtml5.js вы должны добавить условие, в котором ваш атрибут src отличается от классического источника (что ожидал этот плагин) " http://example.png/".

строка 4922:

if (checkAttributes) {
      for (attributeName in checkAttributes) {
        method = attributeCheckMethods[checkAttributes[attributeName]];
        if (!method) {
          continue;
        }
        newAttributeValue = method(_getAttribute(oldNode, attributeName));
        if (typeof(newAttributeValue) === "string") {
          attributes[attributeName] = newAttributeValue;
        }
      }
    }

заменить:

if (checkAttributes) {
      for (attributeName in checkAttributes) {
        method = attributeCheckMethods[checkAttributes[attributeName]];
        if (!method) {
          continue;
        }
        newAttributeValue = (attributeName == "src" && checkAttributes["data-encid"])
            ? oldNode.src
            : method(_getAttribute(oldNode, attributeName));
        if (typeof(newAttributeValue) === "string") {
          attributes[attributeName] = newAttributeValue;
        }
      }
    }

Здесь я просто копирую значение атрибута src без проверки через ядро ​​wysihtml5.js.

Надеюсь это поможет!

Другие вопросы по тегам