// ==UserScript== // @name 妖火复读机 // @namespace http://yaohuo.me/ // @supportURL http://blog.zgcwkj.cn // @version 20240804.01 // @description 妖火论坛每个回复后面加个复读按钮。 // @author zgcwkj // @match *://yaohuo.me/bbs* // @match *://www.yaohuo.me/bbs* // @grant none // @license MIT // @downloadURL none // ==/UserScript== (function () { //发表回复 window.reply = function (txt) { //填写内容 let domTextarea = document.querySelector("textarea"); domTextarea.value = txt; //点击回复按钮 let domInput = document.querySelectorAll("input"); for (let iii = domInput.length - 1; iii > 0; iii--) { if (domInput[iii].value == "快速回复") { domInput[iii].click(); break; } else if (domInput[iii].value == "发表回复") { domInput[iii].click(); break; } } } //注入更多按钮 window.moreReplyBtn = function () { let moreButn = ["吃", "感谢分享", "刚好需要"]; let domForm = document.querySelector(".sticky > form"); if (domForm != null) { //删除最后一个回车 domForm.querySelector("br").remove(); //更多回复按钮 let btnHtml = ""; let btnStyle = "padding:5px;background:#3e933e;border-radius:5px;font-size:14px;color:#fff;"; moreButn.forEach(f => { btnHtml += ` ${f}`; }); domForm.innerHTML += btnHtml; } } //注入复读按钮 window.repeatBotBtn = function () { //获取当前主题版本 let isNewLayout = false; let getNewLayout = localStorage.getItem('customLayoutEnabled'); if (getNewLayout !== null) isNewLayout = JSON.parse(getNewLayout); let domTxt = {}; if (isNewLayout) domTxt = document.querySelectorAll('.forum-post');//新主题 else domTxt = document.querySelectorAll('.list-reply'); //旧主题 //注入按钮 domTxt.forEach(f => { let domClassName = "repeatBotButn"; let domSpan = f.querySelector(".retext"); let isAddReply = domSpan.querySelector(`.${domClassName}`); if (isAddReply == null) { let txt = domSpan.textContent; let btnHtml = ` +1`; domSpan.innerHTML += btnHtml; } }); } //注入更多按钮 window.moreReplyBtn(); //监听时钟 let repeatTimeStart = true; setInterval(() => { //定时注入复读按钮 if (repeatTimeStart) window.repeatBotBtn(); }, 1000); //页面焦点事件(也许能减少性能损耗) var hiddenProperty = 'hidden' in document ? 'hidden' : 'webkitHidden' in document ? 'webkitHidden' : 'mozHidden' in document ? 'mozHidden' : null; var visibilityChangeEvent = hiddenProperty.replace(/hidden/i, 'visibilitychange'); document.addEventListener(visibilityChangeEvent, function () { if (!document[hiddenProperty]) { repeatTimeStart = true; } else { repeatTimeStart = false; } }); })();