妖火复读机

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

目前为 2024-10-12 提交的版本。查看 最新版本

// ==UserScript==
// @name        妖火复读机
// @namespace   http://yaohuo.me/
// @supportURL  http://blog.zgcwkj.cn
// @version     20241012.01
// @description 妖火论坛每个回复后面加个复读按钮。
// @author      zgcwkj
// @match       *://yaohuo.me/bbs*
// @match       *://www.yaohuo.me/bbs*
// @grant       none
// @license     MIT
// ==/UserScript==

(function () {
  let domTextarea = document.querySelector('textarea');
  //发表回复
  window.reply = function (txt, face) {
    //填写内容
    domTextarea.value = txt;
    //选择表情
    for (let i = 0; i < document.forms.length; i++) {
      const form = document.forms[i];
      if (form.name == 'f') {
        form.face.value = face;
        break;
      }
    }
    //点击回复按钮
    let domInput = document.querySelectorAll('input');
    for (let i = domInput.length - 1; i > 0; i--) {
      const btn = domInput[i];
      if (btn.value == '快速回复' || btn.value == '发表回复') {
        btn.click();
        break;
      }
    }
  }
  //注入更多按钮
  let moreButn = [
    { css: 'background:#937a3e;color:#fff', showText: '吃', text: '吃', face: '', },
    { css: 'background:#937a3e;color:#fff', showText: '过', text: '过', face: '', },
    { css: 'background:#a7588d;color:#fffa28', showText: '感谢分享', text: '[forecolor=#91159d]感[/forecolor][forecolor=#540be2]谢[/forecolor][forecolor=#473f1d]分[/forecolor][forecolor=#64de20]享[/forecolor]', face: '谢谢.gif' },
    { css: 'background:#3e933e;color:#fff', showText: '哈哈', text: '哈哈', face: '哈哈.gif' },
    { css: 'background:#3e933e;color:#fff', showText: '恭喜', text: '恭喜', face: '亲亲.gif' },
    { css: 'background:#3e933e;color:#fff', showText: '大佬带带', text: '大佬带带', face: '放电.gif' },
  ];
  window.moreReplyBtn = function () {
    let domForm = document.querySelector('.recontent');
    if (domForm != null) {
      //注入按钮
      let className = 'moreReplyButn';
      let isAddBtn = domForm.querySelector(`.${className}`);
      if (isAddBtn == null) {
        let btnHtml = '';
        let btnStyle = 'padding:5px;border-radius:5px;font-size:14px;';
        moreButn.forEach(f => {
          btnHtml += ` <a href='javascript:;' class='${className}' style='${btnStyle}${f.css}' onclick='window.reply("${f.text}","${f.face}")'>${f.showText}</a>`;
        });
        domForm.innerHTML = `<div style='margin:0 10px 7px;'>${btnHtml}</div>` + domForm.innerHTML;
      }
    }
  }
  //注入复读按钮
  let isNewLayout = false;
  let getNewLayout = localStorage.getItem('customLayoutEnabled');
  if (getNewLayout !== null) isNewLayout = JSON.parse(getNewLayout);
  window.repeatBotBtn = function () {
    //获取当前主题版本
    let domTxt = {};
    if (isNewLayout) domTxt = document.querySelectorAll('.forum-post');//新主题
    else domTxt = document.querySelectorAll('.list-reply'); //旧主题
    //注入按钮
    let className = 'repeatBotButn';
    domTxt.forEach(f => {
      let domSpan = f.querySelector('.retext');
      let isAddBtn = domSpan.querySelector(`.${className}`);
      if (isAddBtn == null) {
        let txt = convertHtmlToUbb(domSpan.innerHTML);
        let btnHtml = ` <a href='javascript:;' class='${className}' onclick='window.reply("${txt}")'>+1</a>`;
        domSpan.innerHTML += btnHtml;
      }
    });
  }
  //检查页面
  if (domTextarea != null) {
    //定时注入
    let repeatTimeStart = true;
    setInterval(() => {
      if (repeatTimeStart) {
        //隐藏提示
        var showTipe = document.querySelector('#retip');
        if (showTipe != null) showTipe.style.display = 'none';
        //注入更多按钮
        window.moreReplyBtn();
        //注入复读按钮
        window.repeatBotBtn();
      }
    }, 1000);
    //页面焦点事件(也许能减少性能损耗)
    document.addEventListener('visibilitychange', function () {
      repeatTimeStart = document.visibilityState != 'hidden';
    });
  }
  //HTML转UBB
  function convertHtmlToUbb(html) {
    //创建一个临时 DOM 元素来解析 HTML
    const tempDiv = document.createElement('div');
    tempDiv.innerHTML = html;
    //获取所有的 img 元素并替换为 UBB 格式
    const imgElements = tempDiv.getElementsByTagName('img');
    for (let i = imgElements.length - 1; i >= 0; i--) {
      const img = imgElements[i];
      const ubbImage = `[img]${img.src}[/img]`;
      img.replaceWith(ubbImage); // 用 UBB 格式替换 img 元素
    }
    //返回处理后的文本
    return tempDiv.innerText || tempDiv.textContent;
  }
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址