OnePlusBBS QuickKey

一加社区快捷键

目前為 2019-12-24 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         OnePlusBBS QuickKey
// @description  一加社区快捷键
// @namespace    https://greasyfork.org/
// @author       choosezzz
// @version      1.4
// @match        https://www.oneplusbbs.com/forum*
// @match        https://www.oneplusbbs.com/thread*
// @match        https://www.oneplusbbs.com/homemod-space-uid*
// @icon         https://static.oneplus.cn/data/attachment/common/4c/common_121_icon.png
// @grant        none
// ==/UserScript==

(function() {
    //65-90 [a-z]
    //keyCode 48 96 = 0
    //keyCode 49 97 = 1
    //keyCode 50 98 = 2
    //keyCode 51 99 = 3
    //keyCode 52 100 = 4
    //keyCode 53 101 = 5
    //keyCode 54 102 = 6
    //keyCode 55 103 = 7
    //keyCode 56 104 = 8
    //keyCode 57 105 = 9
    //event.ctrlKey,event.shiftKey,event .altKey

    //判断是否已显示操作选项
    var cateShow = false;
    //分类选项索引
    var cateIndex = 0;

    //移动操作
    var moveShow = false;
    //游乐园
    var moveIndex = 21;
    document.onkeydown = function(event) {
        var href = window.location.href;
        var e = event || window.event;
        if (!e) {
            return;
        }
        //个人主页
        if (href.search("homemod-space-uid*") != -1) {
            //Ctrl+Alt
            if (e.altKey && e.ctrlKey) {
                var uid = href.replace(/https:\/\/www.oneplusbbs.com\/homemod-space-uid-/g, "").replace(/.html/g, "");
                $("a_sendpm_" + uid).click();
            }
        }

        //Ctrl+number
        if (((e.keyCode >= 49 && e.keyCode <= 57) || (e.keyCode >= 97 && e.keyCode <= 105)) && e.ctrlKey) {
            var msgId = e.keyCode - 96 < 0 ? e.keyCode - 48 : e.keyCode - 96;
            quickPaste(e, msgId);
        }

        //普通帖子页
        if (href.indexOf("thread-") != -1 || href.indexOf("viewthread") != -1) {
            handlePost(e);
        }

        //列表页
        if (href.indexOf("forum-") != -1) {
            handleList(e);
        }

    }
    //屏蔽默认快捷键
    function stopDefault(e) {

        // W3C标准
        if (e.preventDefault) {
            e.preventDefault();
        } else {
            //IE
            window.event.returnValue = false;
        }
        return false;
    }

    function quickPaste(e, id) {

        var href = window.location.href;
        stopDefault(e);
        var quickMsg = new Array(
            // Ctrl + 1
            "输入自定义内容",
            // Ctrl + 2
            "输入自定义内容",
            // Ctrl + 3
            "输入自定义内容",
            // Ctrl + 4
            "输入自定义内容",
            // Ctrl + 5
            "输入自定义内容",
            // Ctrl + 6
            "输入自定义内容",
            // Ctrl + 7
            "输入自定义内容",
            // Ctrl + 8
            "输入自定义内容",
            // Ctrl + 9
            "输入自定义内容"
        );

        //帖子页
        if (href.search("thread-") != -1 || href.indexOf("viewthread") != -1) {
            //操作说明输入
            var mods = $("fwin_mods");
            if (mods && mods.style.display != "none") {
                var reason = $("reason");
                if (reason && quickMsg.length >= id) {
                    reason.value = quickMsg[id - 1];
                    //reason.select();
                }
            }
            //回帖输入
            var reply = $("fwin_reply");
            if (reply && reply.style.display != "none") {
                var postmessage = $("postmessage");
                if (postmessage && quickMsg.length >= id) {
                    postmessage.value = quickMsg[id - 1];
                }
            }
        }
        //个人页,快速发送消息内容
        if (href.search("homemod-space-uid-") != -1) {
            var showMsgBox = $("fwin_showMsgBox");
            if (showMsgBox && showMsgBox.style.display != "none") {
                var pmmessage = $("pmmessage");
                if (pmmessage && quickMsg.length >= id) {
                    pmmessage.value = quickMsg[id - 1];
                }
            }
        }
        //管理页面
        if (href.search("op=ban&uid=")!=-1){
            $("ct").getElementsByClassName("pt")[0].value=quickMsg[id - 1];
        }
    }

    function handlePost(e) {

        // Ctrl + z 快速回复
        if (e.keyCode == 90 && e.ctrlKey) {
            stopDefault(e);
            $("post_reply").click();
            return;
        }

        //获取操作列表
        var modMenu = $("modmenu");
        if (!modMenu) {
            console.log("当前板块无权限");
            return;
        }
        var links = modMenu.getElementsByTagName("a");

        //Ctrl+D 快速删除
        if (e.altKey && e.ctrlKey) {
            stopDefault(e);
            links[0].click();
            return;
        }
        //Ctrl+Alt 快速分类功能
        if (e.altKey && e.ctrlKey) {
            stopDefault(e);
            //快捷点击分类链接
            if (!cateShow) {
                let type = links[10];
                if (type) {
                    type.click();
                    cateShow = true;
                }
            } else {
                let types = $("typeid");
                if (types && types.options.length > 0) {
                    types.options[cateIndex].selected = "true";
                    cateIndex++;
                }
                if (cateIndex == types.options.length) {
                    cateIndex = 0;
                }
            }
            return;
        }
        //Ctrl+X 快速移动功能
        if (e.ctrlKey && e.keyCode == 88) {
            stopDefault(e);
            //快捷点击移动链接
            if (!moveShow) {
                let type = links[9];
                if (type) {
                    type.click();
                    moveShow = true;
                }
            } else {
                var moveTo = $("moveto");
                if (moveTo && moveTo.options.length > 0) {
                    moveTo.options[moveIndex].selected = "true";
                    moveTo.onchange();
                    //游乐园 <--> 轻摄影
                    moveIndex = moveIndex == 21 ? 13 : 21;
                }

            }
        } else {
            //重置
            moveIndex = 21;
            cateIndex = 0;
            moveShow = false;
            cateShow = false;
        }
    }

    function handleList(e) {
        var checkBoxs = document.getElementsByClassName("o");
        if (!checkBoxs || checkBoxs.length < 5) {
            console.log("此版块权限");
        }
        var mdly = $("mdly");
        if (mdly) {
            var ops = mdly.getElementsByTagName("p")[0].getElementsByTagName("a");
            if (e.altKey && e.ctrlKey) {
                stopDefault(e);
                ops[2].click();
            }
            if (e.ctrlKey && e.keyCode == 88) {
                stopDefault(e);
                ops[1].click();
            }
            if (e.keyCode == 90 && e.ctrlKey) {
                stopDefault(e);
                ops[0].click();
            }
        }
    }
})();