// ==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;
}
});
})();