Как удалить элементы из вывода HTML?
Я использую markdown-it и markdown-it-container для предоставления расширенной версии форматирования Markdown в моем приложении. Одним из таких случаев является необходимость предоставления метаданных о документе, которые не должны быть видны в отображаемом выводе. (Потому что это будет отображаться в других областях приложения)
Чтобы достичь этого, я ознакомился с документацией и увидел, что существует очень удобный способ сделать это: скрытое свойство Token#.
Итак, я продолжил и написал этот код, который выполняет следующее:
- Ожидает, когда будет найден конечный токен;
- Проходит все предыдущие токены до
open
:- Если это
inline
хранить его содержимое; - В любом случае, скрыть это.
- Если это
- Работает на собранном содержимом.
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
к разным значениям:
Токены все еще отображаются. - Изменение списка токенов на месте, полное удаление ненужных токенов:
Посылает рендерер в бесконечный цикл и вылетает из браузера.