RetroRocket
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Код: // ==UserScript== // @name RU-Board WhosOnline // @author Wald + Artyom Shegeda // @namespace https://greasyfork.org/ru/scripts/2875-ru-board-whosonline/code // @include http*://forum.ru-board.com/* // @include http*://72.233.112.78/* // @icon http://forum.ru-board.com/favicon.ico // @description Highlights users online // @version 1.6 // @run-at document-end // ==/UserScript== // this.whosonline = ({ autoHighlight: false, url: '/whosonline.cgi', load: function () { if (this.xmlHttp) return; try { this.xmlHttp = new XMLHttpRequest() if (this.xmlHttp.overrideMimeType && this.method == 'POST') this.xmlHttp.overrideMimeType('text/html'); } catch (e) { var msv = ["Msxml2.XMLHTTP.7.0", "Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"] for (var j = 0; j <= msv.length; j++) { try { this.xmlHttp = new ActiveXObject(msv[j]) break } catch (e) {} } if (!this.xmlHttp) return false } var self = this this.xmlHttp.onreadystatechange = function () { if (self.xmlHttp.readyState == 4) { self.processResponse(self.xmlHttp.responseText) self.xmlHttp = null; } } this.xmlHttp.open("GET", this.url + '?timestamp=' + Math.floor(new Date().valueOf() / 60000), true); this.xmlHttp.send(null); }, processResponse: function (text) { var users = {}; text.replace(/<a href="profile\.cgi\?action=show&member=.*?">(.*?)<\/a>/g, function (a, b) { users[b] = true; }); this.users = users; this.autoHighlight && this.highlightUsers(); }, highlightUsers: function () { if (!this.users) { this.autoHighlight = true; if (!this.xmlHttp) { this.load(); } return; } try { var elements = document.getElementsByTagName('B'); for (var i = 0; i < elements.length; i++) { if (elements[i].parentNode.className == 'm' && this.users[elements[i].innerText]) { var onlinestatus = document.createElement('div'); onlinestatus.style.display = 'inline-block'; onlinestatus.style.width = '10px'; onlinestatus.style.height = '10px'; onlinestatus.style.background = '#80FF80'; onlinestatus.style.borderTop = '1px solid #c0ffc0'; onlinestatus.style.borderLeft = '1px solid #c0ffc0'; onlinestatus.style.borderRight = '1px solid #60bf60'; onlinestatus.style.borderBottom = '1px solid #60bf60'; onlinestatus.style.marginRight = '5px'; onlinestatus.title = 'Онлайн'; elements[i].parentNode.insertBefore(onlinestatus, elements[i]); } } } catch (e) { alert(e.message); } }, run: function () { return this; } }).run(); whosonline && (whosonline.load(), window.onload = function () { whosonline.highlightUsers(); }); | Он же в виде готового файла в формате Base64 (распаковать можно в TotalCommander): Код: MIME-Version: 1.0 Content-Type: application/octet-stream; name="ru-board-whosonline.js" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="ru-board-whosonline.js" 77u/Ly8gPT1Vc2VyU2NyaXB0PT0KLy8gQG5hbWUgICAgICAgICAgIFJVLUJvYXJkIFdob3NPbmxp bmUKLy8gQGF1dGhvciAgICAgICAgIFdhbGQgKyBBcnR5b20gU2hlZ2VkYQovLyBAbmFtZXNwYWNl ICAgICAgaHR0cHM6Ly9ncmVhc3lmb3JrLm9yZy9ydS9zY3JpcHRzLzI4NzUtcnUtYm9hcmQtd2hv c29ubGluZS9jb2RlCi8vIEBpbmNsdWRlICAgICAgICBodHRwKjovL2ZvcnVtLnJ1LWJvYXJkLmNv bS8qCi8vIEBpbmNsdWRlICAgICAgICBodHRwKjovLzcyLjIzMy4xMTIuNzgvKgovLyBAaWNvbiAg ICAgICAgICAgaHR0cDovL2ZvcnVtLnJ1LWJvYXJkLmNvbS9mYXZpY29uLmljbwovLyBAZGVzY3Jp cHRpb24gICAgSGlnaGxpZ2h0cyB1c2VycyBvbmxpbmUKLy8gQHZlcnNpb24gICAgICAgIDEuNgov LyBAcnVuLWF0CSAgICAgICBkb2N1bWVudC1lbmQKLy8gPT0vVXNlclNjcmlwdD09Ci8vCnRoaXMu d2hvc29ubGluZSA9ICh7CiAgICBhdXRvSGlnaGxpZ2h0OiBmYWxzZSwKICAgIHVybDogJy93aG9z b25saW5lLmNnaScsCiAgICBsb2FkOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgaWYgKHRoaXMueG1s SHR0cCkgcmV0dXJuOwogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHRoaXMueG1sSHR0cCA9IG5l dyBYTUxIdHRwUmVxdWVzdCgpCiAgICAgICAgICAgIGlmICh0aGlzLnhtbEh0dHAub3ZlcnJpZGVN aW1lVHlwZSAmJiB0aGlzLm1ldGhvZCA9PSAnUE9TVCcpIHRoaXMueG1sSHR0cC5vdmVycmlkZU1p bWVUeXBlKCd0ZXh0L2h0bWwnKTsKICAgICAgICB9CiAgICAgICAgY2F0Y2ggKGUpIHsKICAgICAg ICAgICAgdmFyIG1zdiA9IFsiTXN4bWwyLlhNTEhUVFAuNy4wIiwgIk1zeG1sMi5YTUxIVFRQLjYu MCIsICJNc3htbDIuWE1MSFRUUC41LjAiLCAiTXN4bWwyLlhNTEhUVFAuNC4wIiwgIk1TWE1MMi5Y TUxIVFRQLjMuMCIsICJNU1hNTDIuWE1MSFRUUCIsICJNaWNyb3NvZnQuWE1MSFRUUCJdCiAgICAg ICAgICAgIGZvciAodmFyIGogPSAwOyBqIDw9IG1zdi5sZW5ndGg7IGorKykgewogICAgICAgICAg ICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnhtbEh0dHAgPSBuZXcgQWN0aXZl WE9iamVjdChtc3Zbal0pCiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAg IH0KICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7fQogICAgICAgICAgICB9CiAgICAgICAgICAg IGlmICghdGhpcy54bWxIdHRwKSByZXR1cm4gZmFsc2UKICAgICAgICB9CiAgICAgICAgdmFyIHNl bGYgPSB0aGlzCiAgICAgICAgdGhpcy54bWxIdHRwLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0 aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmIChzZWxmLnhtbEh0dHAucmVhZHlTdGF0ZSA9PSA0 KSB7CiAgICAgICAgICAgICAgICAgICAgc2VsZi5wcm9jZXNzUmVzcG9uc2Uoc2VsZi54bWxIdHRw LnJlc3BvbnNlVGV4dCkKICAgICAgICAgICAgICAgICAgICBzZWxmLnhtbEh0dHAgPSBudWxsOwog ICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgdGhpcy54bWxIdHRwLm9wZW4o IkdFVCIsIHRoaXMudXJsICsgJz90aW1lc3RhbXA9JyArIE1hdGguZmxvb3IobmV3IERhdGUoKS52 YWx1ZU9mKCkgLyA2MDAwMCksIHRydWUpOwogICAgICAgIHRoaXMueG1sSHR0cC5zZW5kKG51bGwp OwogICAgfSwKICAgIHByb2Nlc3NSZXNwb25zZTogZnVuY3Rpb24gKHRleHQpIHsKICAgICAgICB2 YXIgdXNlcnMgPSB7fTsKICAgICAgICB0ZXh0LnJlcGxhY2UoLzxhIGhyZWY9InByb2ZpbGVcLmNn aVw/YWN0aW9uPXNob3cmbWVtYmVyPS4qPyI+KC4qPyk8XC9hPi9nLCBmdW5jdGlvbiAoYSwgYikg ewogICAgICAgICAgICB1c2Vyc1tiXSA9IHRydWU7CiAgICAgICAgfSk7CiAgICAgICAgdGhpcy51 c2VycyA9IHVzZXJzOwogICAgICAgIHRoaXMuYXV0b0hpZ2hsaWdodCAmJiB0aGlzLmhpZ2hsaWdo dFVzZXJzKCk7CiAgICB9LAogICAgaGlnaGxpZ2h0VXNlcnM6IGZ1bmN0aW9uICgpIHsKICAgICAg ICBpZiAoIXRoaXMudXNlcnMpIHsKICAgICAgICAgICAgdGhpcy5hdXRvSGlnaGxpZ2h0ID0gdHJ1 ZTsKICAgICAgICAgICAgaWYgKCF0aGlzLnhtbEh0dHApIHsKICAgICAgICAgICAgICAgIHRoaXMu bG9hZCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAg ICAgdHJ5IHsKICAgICAgICAgICAgdmFyIGVsZW1lbnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC eVRhZ05hbWUoJ0InKTsKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50cy5s ZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgaWYgKGVsZW1lbnRzW2ldLnBhcmVudE5vZGUu Y2xhc3NOYW1lID09ICdtJyAmJiB0aGlzLnVzZXJzW2VsZW1lbnRzW2ldLmlubmVyVGV4dF0pIHsK ICAgICAgICAgICAgICAgICAgICB2YXIgb25saW5lc3RhdHVzID0gZG9jdW1lbnQuY3JlYXRlRWxl bWVudCgnZGl2Jyk7CiAgICAgICAgICAgICAgICAgICAgb25saW5lc3RhdHVzLnN0eWxlLmRpc3Bs YXkgPSAnaW5saW5lLWJsb2NrJzsKICAgICAgICAgICAgICAgICAgICBvbmxpbmVzdGF0dXMuc3R5 bGUud2lkdGggPSAnMTBweCc7CiAgICAgICAgICAgICAgICAgICAgb25saW5lc3RhdHVzLnN0eWxl LmhlaWdodCA9ICcxMHB4JzsKICAgICAgICAgICAgICAgICAgICBvbmxpbmVzdGF0dXMuc3R5bGUu YmFja2dyb3VuZCA9ICcjODBGRjgwJzsKICAgICAgICAgICAgICAgICAgICBvbmxpbmVzdGF0dXMu c3R5bGUuYm9yZGVyVG9wID0gJzFweCBzb2xpZCAjYzBmZmMwJzsKICAgICAgICAgICAgICAgICAg ICBvbmxpbmVzdGF0dXMuc3R5bGUuYm9yZGVyTGVmdCA9ICcxcHggc29saWQgI2MwZmZjMCc7CiAg ICAgICAgICAgICAgICAgICAgb25saW5lc3RhdHVzLnN0eWxlLmJvcmRlclJpZ2h0ID0gJzFweCBz b2xpZCAjNjBiZjYwJzsKICAgICAgICAgICAgICAgICAgICBvbmxpbmVzdGF0dXMuc3R5bGUuYm9y ZGVyQm90dG9tID0gJzFweCBzb2xpZCAjNjBiZjYwJzsKICAgICAgICAgICAgICAgICAgICBvbmxp bmVzdGF0dXMuc3R5bGUubWFyZ2luUmlnaHQgPSAnNXB4JzsKCQkJCQlvbmxpbmVzdGF0dXMudGl0 bGUgPSAn0J7QvdC70LDQudC9JzsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50c1tpXS5wYXJl bnROb2RlLmluc2VydEJlZm9yZShvbmxpbmVzdGF0dXMsIGVsZW1lbnRzW2ldKTsKICAgICAgICAg ICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjYXRjaCAoZSkgewogICAg ICAgICAgICBhbGVydChlLm1lc3NhZ2UpOwogICAgICAgIH0KICAgIH0sCiAgICBydW46IGZ1bmN0 aW9uICgpIHsKICAgICAgICByZXR1cm4gdGhpczsKICAgIH0KfSkucnVuKCk7Cndob3NvbmxpbmUg JiYgKHdob3NvbmxpbmUubG9hZCgpLCB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkgewogICAg d2hvc29ubGluZS5oaWdobGlnaHRVc2VycygpOwp9KTs= |
|