🎉 欢迎访问GreasyFork.Org 镜像站!本镜像站由公众号【爱吃馍】搭建,用于分享脚本。联系邮箱📮

Greasy fork 爱吃馍镜像

Slow Motion

Slow down

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

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

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

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

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

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

🚀 安装遇到问题?关注公众号获取帮助

公众号二维码

扫码关注【爱吃馍】

回复【脚本】获取最新教程和防失联地址

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

🚀 安装遇到问题?关注公众号获取帮助

公众号二维码

扫码关注【爱吃馍】

回复【脚本】获取最新教程和防失联地址

// ==UserScript==
// @name         Slow Motion
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Slow down
// @author       KukuModz
// @match        *://*/*
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    let slowFactor = 5; // Change this number to slow down more (5x slower)
    let slowMode = false;

    // Create control panel
    const panel = document.createElement('div');
    panel.style.position = 'fixed';
    panel.style.top = '10px';
    panel.style.right = '10px';
    panel.style.padding = '10px';
    panel.style.backgroundColor = 'rgba(0,0,0,0.7)';
    panel.style.color = 'white';
    panel.style.zIndex = '1000000';
    panel.style.borderRadius = '5px';
    panel.style.fontFamily = 'Arial, sans-serif';
    panel.style.cursor = 'pointer';
    panel.textContent = 'Enable Slow Motion';
    document.body.appendChild(panel);

    panel.addEventListener('click', () => {
        slowMode = !slowMode;
        panel.textContent = slowMode ? 'Disable Slow Motion' : 'Enable Slow Motion';
        if (slowMode) enableSlowMotion();
        else disableSlowMotion();
    });

    // Store original functions
    const origSetTimeout = window.setTimeout;
    const origSetInterval = window.setInterval;
    const origRequestAnimationFrame = window.requestAnimationFrame;

    let rafMap = new Map();

    function enableSlowMotion() {
        // Slow down setTimeout
        window.setTimeout = function(fn, delay, ...args) {
            return origSetTimeout(fn, delay * slowFactor, ...args);
        };

        // Slow down setInterval
        window.setInterval = function(fn, delay, ...args) {
            return origSetInterval(fn, delay * slowFactor, ...args);
        };

        // Slow down requestAnimationFrame
        window.requestAnimationFrame = function(fn) {
            return origRequestAnimationFrame(timestamp => {
                origSetTimeout(() => fn(timestamp), (1000 / 60) * (slowFactor - 1));
            });
        };

        // Slow down CSS animations
        document.querySelectorAll('*').forEach(el => {
            el.style.animationDuration = getComputedStyle(el).animationDuration.replace('s', '') * slowFactor + 's';
            el.style.transitionDuration = getComputedStyle(el).transitionDuration.replace('s', '') * slowFactor + 's';
        });
    }

    function disableSlowMotion() {
        // Restore original functions
        window.setTimeout = origSetTimeout;
        window.setInterval = origSetInterval;
        window.requestAnimationFrame = origRequestAnimationFrame;

        // Restore CSS animations/transitions
        document.querySelectorAll('*').forEach(el => {
            el.style.animationDuration = '';
            el.style.transitionDuration = '';
        });
    }

})();