SCP-CN Jump Document

SCP-CN 输入文档编号直接跳转

Vous devrez installer une extension telle que Tampermonkey, Greasemonkey ou Violentmonkey pour installer ce script.

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

Vous devrez installer une extension telle que Tampermonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Userscripts pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey pour installer ce script.

Vous devrez installer une extension de gestionnaire de script utilisateur pour installer ce script.

(J'ai déjà un gestionnaire de scripts utilisateur, laissez-moi l'installer !)

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

(J'ai déjà un gestionnaire de style utilisateur, laissez-moi l'installer!)

// ==UserScript==
// @name         SCP-CN Jump Document
// @namespace    https://scp-wiki-cn.wikidot.com/
// @version      2.0.2
// @description  SCP-CN 输入文档编号直接跳转
// @author       se7en
// @match        http*://scp-wiki-cn.wikidot.com/*
// @icon         https://scp-wiki-cn.wikidot.com/local--favicon/favicon.gif
// @license      GPL-3.0 License
// @grant        none
// @require      https://code.jquery.com/jquery-latest.js
// ==/UserScript==

function addButton() {
    let body = $("#html-body"); // document.getElementById("html-body");

    // 添加悬浮按钮
    let float_button = document.createElement("div");
    float_button.style.backgroundColor = "rgba(255, 255, 255, 0.8)";
    float_button.style.backgroundImage = "url('https://pic.imgdb.cn/item/667431f4d9c307b7e93c5691.png')";
    float_button.style.backgroundSize = "cover";
    float_button.style.cssText +=
        "position: fixed; bottom: 21px; right: 11px; cursor: pointer;" +
        "width: 35px; height: 35px; line-height: 35px; transform: translate(.5px, 0); opacity: 1;" +
        "border: 1px #fff solid; border-radius: 25px; color: white; text-align: center;";
    float_button.onclick = function () {
        let ui_div = document.getElementById("input-ui");
        ui_div.style.display = "block";
        document.getElementById("jump-target").value = "SCP-000";
    }
    body.append(float_button);

    // 添加悬浮div
    let float_div = document.createElement("div");
    float_div.id = "input-ui";
    float_div.innerHTML =
        "<input type='text' id='jump-target' readonly>" +
        "<div id='input-ui-button'>" +
        "<ul><li onclick='inputUiCn()'>CN</li><li onclick='inputUiJ()'>J</li><li onclick='inputUiBackspace()'><-</li></ul>" +
        "<ul><li onclick='inputUiNumber(1)'>1</li><li onclick='inputUiNumber(2)'>2</li><li onclick='inputUiNumber(3)'>3</li></ul>" +
        "<ul><li onclick='inputUiNumber(4)'>4</li><li onclick='inputUiNumber(5)'>5</li><li onclick='inputUiNumber(6)'>6</li></ul>" +
        "<ul><li onclick='inputUiNumber(7)'>7</li><li onclick='inputUiNumber(8)'>8</li><li onclick='inputUiNumber(9)'>9</li></ul>" +
        "<ul><li onclick='inputUiClose()'>X</li><li onclick='inputUiNumber(0)'>0</li><li onclick='inputUiGo()'>GO</li></ul>" +
        "</div>";
    float_div.style.cssText +=
        "display: none; position: fixed; bottom: 20px; right: 10px;" +
        "width: 163px; height: 280px; transform: translate(.5px, 0); opacity: 1;" +
        "border: 1px #fff solid; border-radius: 4px;" +
        "background: #91989f; color: white; box-shadow: 2px 2px 5px #555; text-align: center;";
    body.append(float_div);

    // 添加script
    let script = document.createElement('script');
    script.innerHTML = `
        function inputUiClose() { document.getElementById("input-ui").style.display = "none"; }
        function regInputValue(value) {
            let reg_result = /(SCP\-)?(CN-)?([0-9]{3,})?(\-J)?/i.exec(value);
            return {
                scp: reg_result[1],
                cn: reg_result[2] != null ? reg_result[2] : "",
                number: reg_result[3] != null ? reg_result[3] : "",
                joke: reg_result[4] != null ? reg_result[4] : ""
            };
        }
        function inputUiNumber(number) {
            let input = document.getElementById("jump-target");
            let input_value = input.value;
            let reg_input = regInputValue(input_value);
            let old_number = (reg_input["number"] != "") ? String(parseInt(reg_input["number"])) : "";
            let new_value = old_number + number;
            if (new_value.length < 3) new_value = new_value.padStart(3, "0");
            input.value = reg_input["scp"] + reg_input["cn"] + new_value + reg_input["joke"];
        }
        function inputUiBackspace() {
            let input = document.getElementById("jump-target");
            let input_value = input.value;
            let reg_input = regInputValue(input_value);
            console.log(reg_input);
            if (reg_input["number"] != "") {
                let new_value = reg_input["number"].substring(0, reg_input["number"].length - 1);
                if (new_value.length < 3) new_value = new_value.padStart(3, "0");
                input.value = reg_input["scp"] + reg_input["cn"] + new_value + reg_input["joke"];
            }
        }
        function inputUiCn() {
            let input = document.getElementById("jump-target");
            let input_value = input.value;
            let reg_input = regInputValue(input_value);
            let cn_str = (reg_input["cn"] != "") ? "" : "CN-";
            input.value = reg_input["scp"] + cn_str + reg_input["number"] + reg_input["joke"];
        }
        function inputUiJ() {
            let input = document.getElementById("jump-target");
            let input_value = input.value;
            let reg_input = regInputValue(input_value);
            let joke_str = (reg_input["joke"] != "") ? "" : "-J";
            input.value = reg_input["scp"] + reg_input["cn"] + reg_input["number"] + joke_str;
        }
        function inputUiGo() {
            let input = document.getElementById("jump-target");
            let input_value = input.value;
            window.location.href = "https://" + window.location.host + "/" + input_value.toLowerCase();
        }`;
    body.append(script);

    // 添加style
    let style = document.createElement('style');
    style.innerHTML =
        "#jump-target { background: #3c2f41; text-align: right; padding: 0px 5px; border-radius: 10px; margin: 12px 7px; width: 85%; height: 30px; border: 1px #fff solid; font-size: 11pt; color: #f8c3cd; outline: none; }" +
        "#input-ui #input-ui-button ul { padding: 0px; margin: 0px; margin-left: 17px; }" +
        "#input-ui #input-ui-button ul li { list-style: none; background: #574c57; font-weight: bold; border-radius: 10px; margin: 4px 4px 4px 4px; width: 35px; height: 35px; line-height: 36px; float: left; box-shadow: 1px 1px 5px #333; cursor: pointer; }";
    body.append(style);
}

(function () {
    addButton();
})();