FlowMouse Parent Directory

FlowMouseのジェスチャーでWebサイトの上の階層(親ディレクトリ)に移動できるようにします / Enables FlowMouse gesture to navigate up to the parent directory.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey, Greasemonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да инсталирате разширение, като например Tampermonkey .

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Userscripts.

За да инсталирате скрипта, трябва да инсталирате разширение като Tampermonkey.

За да инсталирате този скрипт, трябва да имате инсталиран скриптов мениджър.

(Вече имам скриптов мениджър, искам да го инсталирам!)

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

(Вече имам инсталиран мениджър на стиловете, искам да го инсталирам!)

// ==UserScript==
// @name         FlowMouse Parent Directory
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  FlowMouseのジェスチャーでWebサイトの上の階層(親ディレクトリ)に移動できるようにします / Enables FlowMouse gesture to navigate up to the parent directory.
// @description:ja FlowMouseのジェスチャーでWebサイトの上の階層(親ディレクトリ)に移動できるようにします。
// @description:en Enables FlowMouse gesture to navigate up to the parent directory on any website.
// @author       愛
// @match        *://*/*
// @grant        none
// @run-at       document-start
// @license      MIT
// ==/UserScript==

(function () {
    'use strict';

    console.log('[FlowMouse] Script Loaded');

    // =========================
    // 上階層へ移動処理
    // =========================
    function goUpDirectory() {

        const url = new URL(location.href);

        let path = url.pathname.replace(/\/$/, '');

        // 既にルートなら停止
        if (path === '') {
            return;
        }

        const lastSlash = path.lastIndexOf('/');

        // 一つ上へ
        path = path.substring(0, lastSlash + 1);

        // 空防止
        if (path === '') {
            path = '/';
        }

        url.pathname = path;

        location.href = url.toString();
    }

    // =========================
    // window
    // =========================
    window.addEventListener('flowmouse:up-directory', goUpDirectory);

    // =========================
    // document
    // =========================
    document.addEventListener('flowmouse:up-directory', goUpDirectory);

    // =========================
    // body
    // =========================
    document.body?.addEventListener?.('flowmouse:up-directory', goUpDirectory);

})();