fetch('http://forum.ru-board.com/whosonline.cgi/') .then((response) => response.arrayBuffer()) .then((buffer) => { var html = new TextDecoder('windows-1251').decode(buffer); var users = funcUsers(html); var doc = new DOMParser().parseFromString(html, 'text/html'); function funcUsers(rep) { var users = {}; rep.replace(/<a href="profile\.cgi\?action=show&member=.*?">(.*?)<\/a>/g, function (a, b) { users[b] = true; }); return users; } try { var elements = document.getElementsByTagName('B'); for (var i = 0; i < elements.length; i++) { var onlinestatus = document.createElement('div'); onlinestatus.style.display = 'inline-block'; onlinestatus.style.width = '8px'; onlinestatus.style.height = '8px'; onlinestatus.style.borderRadius = '6px'; onlinestatus.style.marginRight = '5px'; if (elements[i].parentNode.className == 'm' && users[elements[i].innerText]) { onlinestatus.style.background = '#80FF80'; onlinestatus.style.border = '1px solid green'; onlinestatus.title = 'Онлайн'; elements[i].parentNode.insertBefore(onlinestatus, elements[i]); } else if (elements[i].parentNode.className == 'm') { onlinestatus.style.background = '#C0C0C0'; onlinestatus.style.border = '1px solid #A0A0A0'; onlinestatus.title = 'Оффлайн'; elements[i].parentNode.insertBefore(onlinestatus, elements[i]); } } } catch (e) { alert(e.message); } }); |