Как удалить элементы из вывода HTML?

Я использую markdown-it и markdown-it-container для предоставления расширенной версии форматирования Markdown в моем приложении. Одним из таких случаев является необходимость предоставления метаданных о документе, которые не должны быть видны в отображаемом выводе. (Потому что это будет отображаться в других областях приложения)


Чтобы достичь этого, я ознакомился с документацией и увидел, что существует очень удобный способ сделать это: скрытое свойство Token#.

Итак, я продолжил и написал этот код, который выполняет следующее:

  1. Ожидает, когда будет найден конечный токен;
  2. Проходит все предыдущие токены до open:
    1. Если это inline хранить его содержимое;
    2. В любом случае, скрыть это.
  3. Работает на собранном содержимом.

JavaScript можно найти ниже:

markdown.use(container, "meta", {
    render(tokens, idx) {
        if (tokens[idx].nesting === 1) {
            // Ignore opening tag
            return "";
        }

        const content = [];

        let foundOpen = false;
        for (let walk = idx; !foundOpen; --walk) {
            const token = tokens[walk];
            foundOpen = token.type === "container_meta_open";

            if (token.type === "inline") {
                content.push(token.content);
            }

            token.hidden = true;
        }

        doStuffWithMetadata(content);
    }
});

Тем не менее, кажется, hidden собственность не имеет никакого эффекта.

Как еще можно опустить токены из вывода?

Другие методы, которые я попробовал:

  • Установка токенов в списке null :
    Не имеет никакого эффекта, токены по-прежнему отображаются.
  • Установка токенов type к разным значениям:
    Токены все еще отображаются.
  • Изменение списка токенов на месте, полное удаление ненужных токенов:
    Посылает рендерер в бесконечный цикл и вылетает из браузера.

0 ответов

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