NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Youtube Allow Fullscreen // @namespace Youtube Allow Fullscreen by C4illin // @description View embedded youtube videos in fullscreen on every website // @match https://*/* // @match http://*/* // @run-at document-start // @grant none // @author C4illin // @oujs:author C4illin // @version 1.1.2 // @license MIT; https://opensource.org/licenses/MIT // @copyright 2021, C4illin (https://github.com/C4illin) // ==/UserScript== // featurePolicy can still break it and I can't do anything about it :( // for some reason it seems to circumvent featurePolicy if you are fast enough :) setInterval(() => { if (!window.location.href.startsWith("https://www.youtube.com/")) { let iframes = document.querySelectorAll('iframe[src^="https://www.youtube.com/embed/"]:not([allowfullscreen])') iframes.forEach((elem) => { elem.setAttribute('allowFullScreen', '') elem.setAttribute('allow','fullscreen') // eslint-disable-next-line no-undef, no-self-assign iframe.src = iframe.src //Reload iframe, thanks to https://greasyfork.org/en/scripts/398281-allow-full-screen-on-embedded-youtube }) } else if (window.location.href.startsWith("https://www.youtube.com/embed")) { let fullscreenButton = document.getElementsByClassName("ytp-fullscreen-button")[0] if (fullscreenButton.getAttribute("aria-disabled")) { fullscreenButton.style.display = "" fullscreenButton.setAttribute("aria-disabled", false) fullscreenButton.setAttribute("aria-haspopup", false) fullscreenButton.onclick = () => { var e = document.getElementById("player") if (!document.fullscreenElement && !document.mozFullScreenElement && !document.webkitFullscreenElement && !document.msFullscreenElement) { if (e.requestFullscreen) { e.requestFullscreen() } else if (e.msRequestFullscreen) { e.msRequestFullscreen() } else if (e.mozRequestFullScreen) { e.mozRequestFullScreen() } else if (e.webkitRequestFullscreen) { e.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT) } } else { if (document.exitFullscreen) { document.exitFullscreen() } else if (document.msExitFullscreen) { document.msExitFullscreen() } else if (document.mozCancelFullScreen) { document.mozCancelFullScreen() } else if (document.webkitExitFullscreen) { document.webkitExitFullscreen() } } document.getElementsByClassName("ytp-generic-popup")[0].display = "none" } } } }, 350)