您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Добавляет пункт "забанить" в контекстные меню на записях и комментариях.
// ==UserScript== // @name VK Quick Ban // @namespace https://yal.cc // @version 1.0 // @description Добавляет пункт "забанить" в контекстные меню на записях и комментариях. // @author YellowAfterlife // @match https://vk.com/* // @grant none // ==/UserScript== (function() { 'use strict'; var css = ` .reply .ui_actions_menu_wrap { position: relative; } .reply .ui_actions_menu { right: -24px; top: 26px; } .reply .ui_actions_menu_wrap.shown .ui_actions_menu { top: 16px; } `; (function() { var q = document.createElement("style"); q.type = "text/css"; q.innerHTML = css; document.head.appendChild(q); })(); function add(menu, text, func) { var item = document.createElement("a"); item.className = "ui_actions_menu_item"; item.appendChild(document.createTextNode(text)); item.onclick = func; menu.appendChild(item); } function addBan(menu, post, text) { add(menu, text, function(_) { var gid = post.getAttribute("data-post-id"); gid = parseInt(gid.substring(0, gid.indexOf("_"))); if (gid < 0) gid *= -1; var uid = parseInt(post.querySelector(".author").getAttribute("data-from-id")); Wall.blockEx(gid, uid); }); } function patch(menu, post) { menu.classList.add("cc_yal_quick_actions"); addBan(menu, post, "Забанить"); } function patchReply(button, reply){ button.classList.add("cc_yal_quick_actions"); // добавление button.setAttribute("onmouseover", "uiActionsMenu.show(this);"); button.setAttribute("onmouseout", "uiActionsMenu.hide(this);"); button.classList.add("ui_actions_menu_wrap"); var menu = document.createElement("div"); menu.className = "ui_actions_menu _ui_menu cc_yal_quick_actions"; // button.appendChild(menu); addBan(menu, reply, "Забанить"); } function check() { var i; // var menus = document.querySelectorAll(".post .ui_actions_menu:not(.cc_yal_quick_actions)"); for (i = 0; i < menus.length; i++) { var menu = menus[i]; var post = menu; while (post) { if (post.classList.contains("post")) break; post = post.parentElement; } if (post) patch(menu, post); } // var reply_buttons = document.querySelectorAll(".reply .post_actions:not(.cc_yal_quick_actions)"); for (i = 0; i < reply_buttons.length; i++) { var button = reply_buttons[i]; var reply = button; while (reply) { if (reply.classList.contains("reply")) break; reply = reply.parentElement; } if (reply) patchReply(button, reply); } } check(); setInterval(check, 7000); })();