Правильно отрендерить уценку с помощью замечательного - PullRequest
0 голосов
/ 26 октября 2018

Итак, у нас есть HTML-код, сгенерированный из YAML.Затем мы обрабатываем часть дерева DOM в браузере с замечательным jj.А именно, мы получаем все элементы с тегом «markdown», анализируем его текст с замечательным js, а затем заменяем его innerHTML.К сожалению, либо мы неправильно отображаем HTML-объекты, либо неправильно отображаем HTML-теги.

Есть ли рекомендуемый способ анализа уценки в браузере?

// sample text:
// - markdown list with <b>`bold &amp;`</b>

var elements = document.getElementsByClassName('markdown');
var count = elements.length;

// generates HTML entities correctly but not HTML tags
for (let index = 0; index < count; index++) {
  var newText = md.render(elements[index].textContent);
  elements[index].innerHTML = newText;
}

// generates HTML tags correctly but not HTML entities
for (let index = 0; index < count; index++) {
  var newText = md.render(elements[index].innerHTML);
  elements[index].innerHTML = newText;
}

Обновление: Мне кажется, я понимаю, что происходит, замечательно трактует &amp; как &, за которым следует amp;, и, следовательно, я получаю &amp;amp;, который не отображается правильно.Но тогда, даже если я изменю ввод только на &, innerHTML изменит это обратно на &amp;.

Обновление: я смог сделать репо: https://jsfiddle.net/v1o7hLnr/. Что удивительно, так это две вещи: 1) использование innerHTML для получения текста для анализа и 2) обертываниеHTML-сущность в блоке кода.Смотрите здесь: https://jsfiddle.net/vLr1qbfc/

Вот что происходит (см. https://jsfiddle.net/k8hy2mtf/):

  1. Мы получаем текст для анализа из innerHTML.
  2. Внутренний HTML кодирует & to &amp;.
  3. Поскольку текст обернут в блок кода, например: `x&y`, замечательный получает `x&amp;y`.
  4. замечательный, а затем незамедлительно игнорирует HTML-сущность
  5. (Вот почему textContent сработал.)

Итак, мой первоначальный вопрос стоит ... Каков наилучший способ правильно отобразить HTML-документ с замечательным? Должны ли мы анализировать во время сборки вместо этого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...