// ==UserScript== // @name bilibili三连按钮demo // @namespace https://bbs.tampermonkey.net.cn/ // @version 0.1 // @description 给bilibili增加一个真三连按钮 // @author Wyz // @match https://www.bilibili.com/video/* // @grant none // @run-at document-end // ==/UserScript== let triple=document.createElement("button"); triple.innerText="三连"; triple.style.background="#757575";//颜色弄得差不多吧 triple.style.color="#fff"; triple.onclick=function(){ //三连代码 let httpRequest = new XMLHttpRequest(); httpRequest.open('POST', 'https://api.bilibili.com/x/web-interface/archive/like/triple'); httpRequest.setRequestHeader("Content-type","application/x-www-form-urlencoded"); httpRequest.withCredentials = true;//设置跨域发送 let aid=window.__INITIAL_STATE__.aid; let sKey="bili_jct"; let csrf=decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*" + encodeURIComponent(sKey).replace(/[-.+*]/g, "\\$&") + "\\s*\\=\\s*([^;]*).*$)|^.*$"), "$1")) || null; httpRequest.send('aid='+aid+'&csrf='+csrf); httpRequest.onreadystatechange = function () { if (httpRequest.readyState == 4 && httpRequest.status == 200) { var json = JSON.parse(httpRequest.responseText); console.log(json); if(json.code==0){ alert("三连成功!刷新页面可见"); }else{ alert("三连失败/(ㄒoㄒ)/~~"); } } }; }; let ops=document.querySelector('#arc_toolbar_report .ops'); //插入三连之后好像会重新生成,不添加就不会重新生成,暂时没弄清什么情况,先这样处理了. //主要作用是监听ops的修改,等它修改完成之后再插入我们的三连按钮,另外注意run-at是document-end,要等待ops生成之后再监听,不然query返回null会报错 //这个事件会多次调用,但是我们insertBefore插入如果元素存在,只是修改而不会新增 ops.addEventListener("DOMNodeInserted", function(event) { let share=document.querySelector('.share'); share.parentElement.insertBefore(triple,share); });