Как заменить смайлики в html на twemoji?

В пользовательских сообщениях у меня много необработанных смайликов, таких как

   <p>I ❤ your post!</p> 

Мне интересно, как лучше всего заменить эти смайлики красочными смайликами, такими как:

 <p>I <i class = "twa twa-heart">❤️</i> your post!</p>

Я хотел бы оформить смайлики с помощью библиотеки твемодзи.

Вы можете спросить, почему бы не позволить пользователям вставлять стилизованные смайлики в первую очередь при выборе смайликов? Ответ заключается в том, что текстовый редактор интерфейса не поддерживает WYSIWYG, а пользовательские сообщения сильно урезаны. Поэтому такой вариант исключен, и я ищу решение, которое выполняет это преобразование во время рендеринга.

Вы бы просто использовали replace.

Jack Bashford 30.05.2019 15:54

@Джек Башфорд. Есть десятки смайликов, с которыми нужно иметь дело. Поэтому я не уверен, что лучше всего подходит для анализа и замены всей страницы.

Karlom 30.05.2019 15:55

Документация на их главной странице в GitHub буквально говорит вам, как это сделать: twemoji.parse(document.body);

Strelok 30.05.2019 16:05
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
3
2 044
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Используйте объект, где ключ — это урезанный смайлик, а значение — это полный HTML-контент. Переберите каждый символ в строке и проверьте, не является ли он урезанным смайликом. Если это так, замените его. Наконец, соедините все вместе и напишите на странице.

const raw = "<p>I ❤ your post!</p>";
const emojis = {
  "❤": `<i class = "twa twa-heart">❤️</i>`
};
const res = [...raw].map(e => emojis[e] || e).join("");
document.write(res);
Ответ принят как подходящий

Ознакомьтесь с документацией для twemoji.... https://github.com/twitter/twemoji#api

API

Ниже приведены все методы, представленные в пространстве имен twemoji.

twemoji.parse( ... ) V1

Это основная утилита синтаксического анализа, которая имеет 3 перегрузки для каждого типа синтаксического анализа.

В основном существует два вида синтаксического анализа: разбор строки и Разбор DOM.

Вы можете анализировать строки (анализировать их ввод).

Я считаю, что вы ищете что-то вроде этого:

Однако для уже продезинфицированных строк этот метод можно считать достаточно безопасным. См. анализ DOM, если безопасность является одной из ваших основных проблем.

twemoji.parse('I \u2764\uFE0F emoji!');

// will produce
/*
I <img
  class = "emoji"
  draggable = "false"
  alt = "❤️"
  src = "https://twemoji.maxcdn.com/36x36/2764.png"/> emoji!
*/

Как я могу применить это ко всей странице?

Karlom 30.05.2019 16:02

Я дал ссылку на API, но вот ваша прямая ссылка. github.com/twitter/twemoji#дом-разбор. Просто введите тег HTML5, в котором хранится их сообщение.

FeaturedSpace 30.05.2019 16:04

Это работает как шарм: $(document).ready(function () { document.body = twemoji.parse(document.body); }); Спасибо!

Karlom 30.05.2019 16:08

Без проблем, рад помочь!

FeaturedSpace 30.05.2019 16:40

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