您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
try to take over the world!
当前为
// ==UserScript== // @name Tcafe Block User // @namespace http://tampermonkey.net/ // @version 2.1 // @description try to take over the world! // @author You // @include /tcafe2a.com/ // @require http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js // @grant GM_setValue // @grant GM_getValue // @grant GM_addStyle // @run-at document-end // ==/UserScript== (function() { var css = document.createElement('link'); css.href = 'https://use.fontawesome.com/releases/v5.15.1/css/all.css'; css.rel = 'stylesheet'; css.type = 'text/css'; document.getElementsByTagName('head')[0].appendChild(css); })(); GM_addStyle (` body { position: absolute!important; top: 0!important; bottom: 0!important; left: 0!important; right: 0!important; width: 1100px!important; margin: auto!important; } .BanList { position: absolute; left: 10px; top: 10px; z-index: 9999999; border: 2px solid #4CAF50; text-align: center; font-family: 'Nanum Gothic', "Malgun Gothic", dotum, sans-serif !important; background-color: white; padding: .4em .4em; } .BanButton { position: absolute; left: 10px; top: 10px; z-index: 9999998; text-align: center; font-family: 'Nanum Gothic', "Malgun Gothic", dotum, sans-serif !important; background-color: white; padding: .4em .4em; } .BanList-wrapper { text-align: left; font-size: 13px; font-family: 'Nanum Gothic', "Malgun Gothic", dotum, sans-serif !important; margin: auto; } .BanCheck { text-align: center !important; margin: auto; } `); //document.querySelector('.top_bg').insertAdjacentHTML('beforeend', ' <a class="BanIcon fas fa-ban" href="javascript:void(0)">BanLIST</>') document.querySelector('body').insertAdjacentHTML('beforebegin', '<div class="BanButton"><i class="BanButtonIcon far fa-angry fa-2x fa-spin"></i></>') document.querySelector('body').insertAdjacentHTML('beforebegin', '<div class="BanList"><i class="BanListupdate far fa-save"></i> BanList <i class="BanListClose fas fa-times"></i></>') // 차단유저 ID var IDs = JSON.parse(GM_getValue("IDs", "[]")) var ShowHide = GM_getValue("ShowHide") if(ShowHide == 'Hide'){ $(".BanList").hide() $(".BanButton").show() } else{ $(".BanList").show() $(".BanButton").hide() } IDs.forEach(function (item) { let IDNode = $('a > span.member').closest('a') //코멘트 제거 if(IDNode && /wr_id/.test(window.location.href)){ for(var i=0; i < IDNode.length; i++) { var matchIDc = IDNode[i].outerHTML.match(/showSideView\(this, '(.*)',/) if (IDNode[i].parentNode.className ==='user' && matchIDc[1] == item.ID) { console.log('코멘트 번호 : ' + IDNode[i].parentNode.nextElementSibling.children[1].getAttribute('name') + ' -- 닉네임 : ' + item.NickName) IDNode[i].closest('div.box').remove() } } } //글목록에서 제거 if(IDNode){ for(var j=0; j < IDNode.length; j++) { var matchID = IDNode[j].outerHTML.match(/showSideView\(this, '(.*)',/) if (IDNode[j].closest('tr') && matchID[1] == item.ID) { console.log('게시글 번호 : ' + IDNode[j].closest('tr').getAttribute('id') + ' -- 닉네임 : ' + item.NickName) IDNode[j].closest('tr').remove() } } } }) function BanList(GetNickName) { let getids = document.querySelector('td#sideViewRow_mb_id > span > a').getAttribute('href') let GetID =getids.replace(/.*\&stx=/,'') let searchID = IDs.find( ({ ID }) => ID === GetID ) let searchNickName = IDs.find( ({ NickName }) => NickName === GetNickName ) if(searchNickName){ alert("[ " + GetNickName + " ] 이미 차단 등록되었습니다!") } else if(searchID){ alert("[ " + GetID + " ] 이미 차단 등록되었습니다!") } else { IDs.push({ID : GetID, NickName : GetNickName}); GM_setValue("IDs", JSON.stringify(IDs)) Reload() } } let BanIDs = document.querySelectorAll('span.member') for (let i = 0; i < BanIDs.length; i++) { BanIDs[i].addEventListener("click", async function(e){ var GetNickName = BanIDs[i].textContent //console.log(GetNickName) await sleep(150) let entries = document.querySelector('td#sideViewRow_mb_id') //console.log(entries) entries.closest('tr').insertAdjacentHTML('afterend', '<tr height="19"><td id="Banid"> <font color="gray">·</font> <span style="color: #A0A0A0; font-size: 11px;"><a href="javascript:void(0);">Ban ID</a></span></td></tr>') document.querySelector('#Banid').addEventListener("click", function(e){ e.preventDefault() BanList(GetNickName) }); }) } function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } function update() { let BanCheck = document.querySelectorAll('.BanCheck') //console.log(BanCheck) for (let i = 0; i < BanCheck.length; i++) { if (BanCheck[i].checked == false){ var RemoveNickName = BanCheck[i].getAttribute('NickName') //console.log(AddID) var removeIndex = IDs.map(function(item) { return item.NickName; }).indexOf(RemoveNickName); // remove object IDs.splice(removeIndex, 1); } if(i == BanCheck.length -1){ GM_setValue("IDs", JSON.stringify(IDs)) Reload() } } } const Bancontainer = document.querySelector('.BanList') const BanUpdate = document.querySelector('.BanListUpdate') BanUpdate.addEventListener("click", function(e){ update() }) MakeList() function Reload() { var element = document.querySelectorAll('.BanList-wrapper') Array.prototype.forEach.call( element, function( node ) { node.parentNode.removeChild( node ); }); MakeList() } function MakeList() { for (let i = 0; i < IDs.length; i++) { let wrapper = document.createElement('div') let label = document.createElement('label') let checkbox = document.createElement('input') wrapper.classList.add('BanList-wrapper') //label.textContent = ' ' + IDs[i].NickName + " [ " + document.querySelectorAll("td > a[onclick*=" + IDs[i].ID +"]").length + " | " + document.querySelectorAll("div.user > a[onclick*=" + IDs[i].ID +"]").length + " ]" label.textContent = ' ' + IDs[i].NickName checkbox.type = 'checkbox' checkbox.checked = true checkbox.setAttribute("class", 'BanCheck') checkbox.setAttribute("NickName", IDs[i].NickName) wrapper.appendChild(checkbox) wrapper.appendChild(label) Bancontainer.appendChild(wrapper) } } $(".BanListClose").click(function(){ $(".BanList").hide(250) $(".BanButton").show(250) ShowHide = 'Hide' GM_setValue("ShowHide", ShowHide) }); $(".BanButtonIcon").click(function(){ $(".BanList").show(250) $(".BanButton").hide(250) ShowHide = 'Show' GM_setValue("ShowHide", ShowHide) });