Greasy Fork

Greasy Fork is available in English.

妖火网增强插件

获得焦点时回复框自动停靠、加载更多楼层、回复任意楼层、回复后快速返回

当前为 2022-05-14 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         妖火网增强插件
// @namespace    https://yaohuo.me/
// @version      0.32
// @description  获得焦点时回复框自动停靠、加载更多楼层、回复任意楼层、回复后快速返回
// @author       外卖不用券(id:23825)
// @match        https://*.yaohuo.me/*
// @icon         https://yaohuo.me/css/favicon.ico
// @license      MIT
// ==/UserScript==

if (/^\/bbs-.*\.html$/.test(window.location.pathname) || '/bbs/book_view.aspx' === window.location.pathname) {
    // 回复框停靠
    let content = document.getElementsByClassName('content')[1];
    let form = document.getElementsByName('f')[0];
    content.removeChild(form);
    let newDiv = document.createElement('div');
    let clazz = document.createAttribute('class');
    clazz.value = 'sticky';
    newDiv.setAttributeNode(clazz);
    newDiv.style.cssText = 'padding: 7px; background-color: #fff';
    newDiv.innerHTML = form.outerHTML;
    document.body.insertBefore(newDiv, content);
    let sticky = false;
    newDiv.onclick = () => {
        let form = document.getElementsByName('f')[0];
        let sendmsg = document.getElementsByName('sendmsg')[0];
        let span = document.createElement('span');
        let textNode = document.createTextNode('取消回复停靠');
        span.appendChild(textNode);
        span.style.cssText = 'float: right';
        span.onclick = (e) => {
            e.cancelBubble = true;
            newDiv.style.cssText = 'padding: 7px; background-color: #fff';
            form.removeChild(span);
            sticky = false;
        };
        if (!sticky) {
            newDiv.style.cssText = 'position: sticky; top: 0; bottom: 0; padding: 7px; background-color: #fff';
            form.insertBefore(span, sendmsg);
            sticky = true;
        }
    }
    // 加载更多回复
    let more = document.getElementsByClassName('more')[0];
    let moreLink = more.getElementsByTagName('a')[0];
    let totalpage = Math.ceil(/getTotal=\d+/.exec(moreLink.href)[0].slice(9) / 15);
    let currpage = parseInt(/lpage=\d+/.exec(moreLink.href)[0].slice(6));
    let topage = parseInt(/&page=\d+/.exec(moreLink.href)[0].slice(6));
    let tourl = moreLink.href.replace('&page=' + topage, '');
    more.removeChild(moreLink);
    let newMoreLink = document.createElement('a');
    let span1 = document.createElement('span');
    let span1_id = document.createAttribute('id');
    span1_id.value = 'KL_show_loadimg';
    span1.setAttributeNode(span1_id);
    newMoreLink.appendChild(span1);
    let span2 = document.createElement('span');
    let span2_id = document.createAttribute('id');
    span2_id.value = 'KL_show_tip';
    span2.setAttributeNode(span2_id);
    span2.appendChild(document.createTextNode('加载更多(' + currpage + '/' + totalpage + ')'));
    newMoreLink.appendChild(span2);
    more.appendChild(newMoreLink);
    newMoreLink.onclick = () => KL_show_next(totalpage, 15, currpage, tourl, 'page');
    // 回复任意楼层
    replyAny();
} else if ('/bbs/book_re.aspx' === window.location.pathname && !window.location.search) {
    window.location.href = document.getElementsByTagName('a')[0].href;
}

function replyAny() {
    let sticky = document.getElementsByClassName('sticky')[0];
    let recontent = document.getElementsByClassName('recontent')[0].childNodes;
    for (let i = 0; i < recontent.length; i++) {
        let replyLink = recontent[i].getElementsByTagName('a')[0].href;
        recontent[i].onclick = () => {
            let reply = /reply=\d+/.exec(replyLink)[0].slice(6);
            let touserid = /touserid=\d+/.exec(replyLink)[0].slice(9);
            sticky.style.cssText = 'position: sticky; top: 0; bottom: 0; padding: 7px; background-color: #fff';
            sticky.click();
            let form = document.getElementsByName('f')[0];
            if (form.firstChild.tagName === 'B') {
                form.removeChild(form.firstChild);
                form.removeChild(form.firstChild);
                form.removeChild(form.firstChild);
            }
            form.insertAdjacentHTML('afterbegin', '<b>回复' + reply + '楼</b><select name="sendmsg2"><option value="1">通知对方</option><option value="0">不予通知</option></select><br>');
            if (form.lastChild.tagName === 'INPUT') {
                form.removeChild(form.lastChild);
                form.removeChild(form.lastChild);
            }
            form.insertAdjacentHTML('beforeend', '<input type="hidden" name="reply" value="' + reply + '">');
            form.insertAdjacentHTML('beforeend', '<input type="hidden" name="touserid" value="' + touserid + '">');
        }
    }
}

// KL_common.js
var xmlhttp = null;
var KL_now_currpage = 0;
var KL_page_total = 0;
var KL_scoll_downEnd = 0;
function KL_show_next(KL_total, KL_pagesize, KL_currpage, tourl, pagetype) {
    KL_page_total = parseInt(KL_total);
    var pagesize = parseInt(KL_pagesize);
    var currpage = parseInt(KL_currpage);
    if (KL_now_currpage == 0) {
        KL_now_currpage = currpage + 1;
    } else {
        KL_now_currpage = KL_now_currpage + 1;
    }
    document.getElementById('KL_show_loadimg').innerHTML = '<span id=\"loadimg\">&nbsp;</span>';
    document.getElementById('KL_show_tip').innerHTML = '正在努力加载(' + KL_now_currpage + '/' + KL_page_total + ')中';
    if ((KL_now_currpage) > KL_page_total) {
        document.getElementById('KL_show_loadimg').innerHTML = '';
        document.getElementById('KL_show_tip').innerHTML = '没有更多了';
    } else {
        tourl = tourl + '&' + pagetype + '=' + KL_now_currpage;
        LoadXML_Async(tourl);
    }
}
function LoadXML_Async(tourl) {
    try {
        if (window.XMLHttpRequest) {
            xmlhttp = new XMLHttpRequest();
            if (xmlhttp.overrideMimeType) {
                xmlhttp.overrideMimeType("text/xml");
            }
        } else if (window.ActiveXObject) {
            var activexName = ["MSXML2.XMLHTTP", "Microsoft.XMLHTTP", ""];
            for (var i = 0; i < activexName.length; i++) {
                try {
                    xmlhttp = new ActiveXObject(activexName[i]);
                    break;
                } catch (e) { }
            }
        }
        xmlhttp.onreadystatechange = KL_CallBack;
        xmlhttp.open("GET", tourl, true);
        xmlhttp.send(null);
    } catch (e) {
        document.getElementById('KL_show_loadimg').innerHTML = '<span id=\"loadimg\">&nbsp;</span>';
        document.getElementById('KL_show_tip').innerHTML = '加载出错了!';
    }
}
function KL_CallBack() {
    if (xmlhttp == null) {
        return;
    }
    if (xmlhttp.readyState == 4) {
        if (xmlhttp.status == 200) {
            var responseText = xmlhttp.responseText;
            var st = responseText.indexOf("<!--listS-->");
            var et = responseText.indexOf("<!--listE-->");
            if (st < 0 || et < 0) {
                document.getElementById('KL_show_loadimg').innerHTML = '';
                document.getElementById('KL_show_tip').innerHTML = '加载完全部了!';
            } else {
                responseText = responseText.substring(st + 12, et);
                document.getElementsByClassName('recontent')[0].style.display = 'block';
                document.getElementsByClassName('recontent')[0].innerHTML += responseText;
                replyAny();
                if (KL_now_currpage == KL_page_total) {
                    document.getElementById('KL_show_loadimg').innerHTML = '';
                    document.getElementById('KL_show_tip').innerHTML = '没有更多了';
                } else {
                    document.getElementById('KL_show_loadimg').innerHTML = '';
                    document.getElementById('KL_show_tip').innerHTML = '加载更多(' + (KL_now_currpage) + '/' + KL_page_total + ')';
                }
            }
        }
    }
}