您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds a checkbox bottom right, once enabled, it'll loop without it stopping
// ==UserScript== // @name YouTube Music Loop Toggle // @namespace http://tampermonkey.net/ // @version 0.3 // @description Adds a checkbox bottom right, once enabled, it'll loop without it stopping // @author Emree.el on instagraaammmmmm :D // @match https://music.youtube.com/* // @grant none // @run-at document-end // @license MIT // ==/UserScript== (function() { 'use strict'; // Create and style the checkbox const createCheckbox = () => { const checkbox = document.createElement('input'); checkbox.type = 'checkbox'; checkbox.style.position = 'fixed'; checkbox.style.bottom = '100px'; // Further adjusted position checkbox.style.right = '20px'; checkbox.style.zIndex = '1000'; checkbox.id = 'yt-loop-checkbox'; return checkbox; }; // Load the saved state from local storage const loadState = () => { const checkbox = document.getElementById('yt-loop-checkbox'); const savedState = localStorage.getItem('ytLoopState'); checkbox.checked = savedState === 'true'; return checkbox.checked; }; // Save the state to local storage const saveState = (state) => { localStorage.setItem('ytLoopState', state); }; // Handle the looping logic const handleLoop = () => { const checkbox = document.getElementById('yt-loop-checkbox'); const player = document.querySelector('video'); if (player) { player.loop = checkbox.checked; } }; // Initialize script const init = () => { const checkbox = createCheckbox(); document.body.appendChild(checkbox); // Load and apply the saved state const isLooping = loadState(); checkbox.checked = isLooping; handleLoop(); // Add event listener to handle checkbox changes checkbox.addEventListener('change', (e) => { const isChecked = e.target.checked; saveState(isChecked); handleLoop(); }); // Observe changes to the video element to apply looping const observer = new MutationObserver(() => { handleLoop(); }); observer.observe(document.body, { childList: true, subtree: true }); }; // Wait for the page to fully load before initializing window.addEventListener('load', init); })();