Restore hover "Watch Later" functionality on YouTube
// ==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
});
})();