Greasy Fork

Greasy Fork is available in English.

妖火复读机

妖火论坛每个回复后面加个复读按钮。

当前为 2024-08-04 提交的版本,查看 最新版本

// ==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
// ==/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 += ` <a href='javascript:;' style='${btnStyle}' onclick='window.reply("${f}")'>${f}</a>`;
      });
      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 = ` <a href='javascript:;' class='${domClassName}' onclick='window.reply("${txt}")'>+1</a>`;
        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;
    }
  });
})();