YouTube Hover Restore

Restore hover "Watch Later" functionality on YouTube

K instalaci tototo skriptu si budete muset nainstalovat rozšíření jako Tampermonkey, Greasemonkey nebo Violentmonkey.

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

K instalaci tohoto skriptu si budete muset nainstalovat rozšíření jako Tampermonkey nebo Violentmonkey.

K instalaci tohoto skriptu si budete muset nainstalovat rozšíření jako Tampermonkey nebo Userscripts.

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

K instalaci tohoto skriptu si budete muset nainstalovat manažer uživatelských skriptů.

(Už mám manažer uživatelských skriptů, nechte mě ho nainstalovat!)

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.

(Už mám manažer uživatelských stylů, nechte mě ho nainstalovat!)

// ==UserScript==
// @name         YouTube Hover Restore
// @namespace    http://tampermonkey.net/
// @version      0.4
// @description  Restore hover "Watch Later" functionality on YouTube
// @author       Grasscamper
// @match        https://www.youtube.com/*
// @grant        none
// @run-at       document-end
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    // Verwijder de oude stijl als die al bestaat
    const existingStyle = document.getElementById('youtube-hover-restore-style');
    if (existingStyle) {
        existingStyle.remove();
    }

    const style = document.createElement('style');
    style.id = 'youtube-hover-restore-style';
    style.textContent = `
        /* Maak de overlay zichtbaar maar niet klikbaar */
        .ytThumbnailHoverOverlayToggleActionsViewModelHost {
            top: 0 !important;
            pointer-events: none !important;
        }
        
        /* Zorg dat de thumbnail zelf klikbaar blijft */
        .yt-thumb {
            pointer-events: auto !important;
        }
        
        /* Zorg dat de knoppen binnen de overlay wel klikbaar zijn */
        .ytThumbnailHoverOverlayToggleActionsViewModelHost .yt-spec-button-shape-next {
            pointer-events: auto !important;
        }
        
        /* Zorg dat de link van de thumbnail werkt */
        .yt-thumb a {
            pointer-events: auto !important;
        }
        
        /* Zorg dat de thumbnail container klikbaar is */
        .ytd-thumbnail-renderer {
            pointer-events: auto !important;
        }
    `;
    document.head.appendChild(style);

    // Voeg extra controle toe
    function fixClickableThumbnails() {
        // Zorg dat de thumbnail link niet wordt geblokkeerd
        const thumbnails = document.querySelectorAll('a[href^="/watch"]');
        thumbnails.forEach(thumb => {
            // Verwijder eventuele pointer-events die de klik blokkeren
            thumb.style.pointerEvents = 'auto';
        });
    }

    // Voer uit wanneer de pagina klaar is
    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', fixClickableThumbnails);
    } else {
        fixClickableThumbnails();
    }

    // Voer ook uit op DOM veranderingen (voor dynamische content)
    const observer = new MutationObserver(function(mutations) {
        mutations.forEach(function(mutation) {
            if (mutation.type === 'childList') {
                fixClickableThumbnails();
            }
        });
    });

    observer.observe(document.body, {
        childList: true,
        subtree: true
    });
})();