JSFiddle - React, Tailwind, and code Playground
by Anton_Diaz
JavaScript
function chatCounter() {
var newMessages = document.querySelectorAll('.chat-line .message:not(.adiaz-checked)'); // не ">" селектор, так как в VODе у модератора есть элемент(ы) между ними
if (newMessages.length > 0) {
/* Создаем таблицу, если ее еще нет */
if (!document.getElementById('adiaz-informer')) {
createInformerElement();
}
/* Читаем таблицу */
var counterData = readStatsElement();
/* Проверяем новые (ранее не проверенные) сообщения в чате */
var statsElementChanged;
for (var j = 0; j < newMessages.length; j++) {
/* Проверям каждую фразу - есть ли она в сообщении */
for (var phrase in counterData['phrases']) {
if (newMessages[j].textContent.toLowerCase().indexOf(phrase.toLowerCase()) >= 0) {
counterData['phrases'][phrase] = counterData['phrases'][phrase] + 1;
document.querySelector('[data-adiaz-phrase-target="' + encodeURIComponent(phrase) + '"]').textContent = counterData['phrases'][phrase];
statsElementChanged = true;
}
}
/* Проверям каждый эмотикон в сообщении - есть ли он списке */
messageEmoticonElements = newMessages[j].querySelectorAll('.emoticon[alt]');
for (var i = 0; i < messageEmoticonElements.length; i++) {
var messageEmoticon = messageEmoticonElements[i].getAttribute('alt');
if (messageEmoticon in counterData['emoticons']) {
counterData['emoticons'][messageEmoticon] = counterData['emoticons'][messageEmoticon] + 1;
document.querySelector('[data-adiaz-emoticon-target="' + encodeURIComponent(messageEmoticon) + '"]').textContent = counterData['emoticons'][messageEmoticon];
statsElementChanged = true;
} else if (messageEmoticon in counterData['auto emoticons']) {
counterData['auto emoticons'][messageEmoticon] = counterData['auto emoticons'][messageEmoticon] + 1;
document.querySelector('[data-adiaz-emoticon-target="' + encodeURIComponent(messageEmoticon) + '"]').textContent = counterData['auto emoticons'][messageEmoticon];
statsElementChanged...