您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Hide users in Tapuz
// ==UserScript== // @name OhYE! // @namespace imdfl1 // @description Hide users in Tapuz // @include http://www.tapuz.co.il/forums2008/*forumid* // @version 1.14 // @grant GM_getValue // @grant GM_setValue // ==/UserScript== (function() { "use strict"; var oldUsers = [ {id: 1615810, name: "ye44"}, {id: 2340317, name: unescape("%u05D5%20%u05D5%20%u05D9%20%u05E0%20%u05E1%20%u05D8%20%u05D5%20%u05DF")}, ], hiding = true, users = JSON.parse(GM_getValue("ignored_users1") || "[]") || []; // console.log("saved users: ", users); function isIgnored(id) { var rec = users.filter(function(u) { return u.id === id; })[0]; return Boolean(rec); } function ignoreUser(id, name, bIgnore) { var user = {id: id, name: name}; if (isIgnored(id)) { if (bIgnore) { return; } var rec; for (var i = users.length - 1; i >= 0; --i) { if (users[i].id == id) { users.splice(i); } } } else if (bIgnore) { users.push(user); } if (hiding) { toggleUser(user, bIgnore); } GM_setValue("ignored_users1", JSON.stringify(users)); } function getParent(e, selector) { var p = e && e.parentNode, classes; while (p) { if (p.tagName.toLowerCase() === selector) return p; classes = (p.className || "").split(' '); if (classes.indexOf(selector) > -1) { return p; } p = p.parentNode; } return null; } function toggleOne(div, parentSelector, hide, mode) { var parent = getParent(div, parentSelector), toggled; if (parent) { if (hide) { if (mode === "height") { parent.style.height = "1px"; } else { parent.style.display = "none"; } } else { if (mode === "height") { parent.style.height = ""; } else { parent.style.display = "block"; } } } else { // console.log("cannot find parent with selector", parentSelector); } } function toggleUser(user, isHidden) { // console.log("toggling user", user.id); var divs = document.querySelectorAll("div#user_" + user.id), len, i; for (i = 0, len = divs.length; i < len; ++i) { toggleOne(divs[i], "msg-title", isHidden && hiding, "height"); } } function toggleIt() { users.forEach(function(user) { toggleUser(user, hiding); }); } function onIgnoreChange(id, name, event) { var target = event.currentTarget || event.target, ignore = target.checked; // console.log("ignore changed to ", ignore); ignoreUser(id, name, ignore); } function addIgnoreUI(node) { if (node.querySelector("input.imdfl-checkbox")) { return console.log("new new already contains ignore ui"); } var anchors = node.querySelectorAll("a"), send, userId, userName; anchors = [].slice.call(anchors); anchors.forEach(function(a) { var href = (a.href || a.getAttribute("href") || "").toLowerCase(), ind; if (href.indexOf("newmsg") >= 0) { send = a; } else if ((ind = href.indexOf("userid=")) >= 0) { userId = href.substring(ind + 7).replace(/[^\d]/g, ''); } }); var bees = node.querySelectorAll("b"); bees = [].slice.call(bees); bees.forEach(function(b) { if (b.innerHTML.indexOf("שם") >= 0) { userName = (b.nextSibling.textContent || "").replace(/^\s+/g, '').replace(/\s+$/g, ''); } }); if (send) { var div = document.createElement("div"), id="chk_" + Date.now(), checked = isIgnored(id) ? "" : ""; div.style.display = "inline-block"; div.innerHTML = '<input type="checkbox" class="imdfl-checkbox" id="' + id + '" name="' + id + '"' + checked + ' /><label for="' + id + '">התעלם</label>'; send.parentNode.appendChild(div); var chk = div.querySelector("input"); chk.checked = isIgnored(userId); chk.addEventListener("change", onIgnoreChange.bind(this, userId, userName)); } } function onDomMutation(mutations) { var i, len = mutations.length, m, nodeIndex, nodeCount, lst, node, attr, addNodes = [], delNodes = []; for (i = 0; i < len; ++i) { m = mutations[i]; switch (m.type) { case "childList": lst = m.addedNodes; for (nodeIndex = 0, nodeCount = lst.length; nodeIndex < nodeCount; nodeIndex++) { node = (lst[nodeIndex]); if (node.className === "user-details-card") { addIgnoreUI(node); } } } } } function toggleNotifications(nDiv) { var anchors = nDiv.querySelectorAll("a"); // window.console.log("found", anchors.length, "anchors"); for (var i = 0, len = users.length; i < len; ++i) { var user = users[i], wrote = unescape(user.name + "%20%u05DB%u05EA%u05D1"), a; for (var j = 0, alen = anchors.length; j < alen; ++j) { a = anchors[j]; if (a.innerHTML.indexOf(wrote) >= 0) { toggleOne(a, "li", hiding, "display"); } } } } function testNotifications() { //console.log("testNotifications"); var nInterval = window.setInterval(function() { var nDiv = document.querySelector("div.notificationsHistoryContainer"); // console.log("checking notifications container, display", nDiv && nDiv.style.display); if (! nDiv || nDiv.style.display === "none") { return; } clearInterval(nInterval); var cb = toggleNotifications.bind(this, nDiv); setTimeout(cb, 300); setTimeout(cb, 600); setTimeout(cb, 1500); }, 200); // console.log("set interval to", nInterval); } var button, interval = setInterval(function() { button = document.querySelector("div.notificationsHistoryButton"); if (button) { clearInterval(interval); button.addEventListener("click", testNotifications, true); } }, 1000); var domObserver = new window.MutationObserver(onDomMutation), domObserverConfig = { attributes: true, childList: true, characterData: false, subtree: true, attributeFilter: ["style", "class"] }; domObserver.observe(document.body, domObserverConfig); document.body.addEventListener("keydown", function(event) { if (event.keyCode === 89 && event.altKey && event.ctrlKey) { hiding = ! hiding; toggleIt(); } }); toggleIt(); }());