Skip to content

Instantly share code, notes, and snippets.

@yasirkula
Last active November 28, 2022 18:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yasirkula/efbb784ad49c304794f0be66560d8f47 to your computer and use it in GitHub Desktop.
Save yasirkula/efbb784ad49c304794f0be66560d8f47 to your computer and use it in GitHub Desktop.
Restore fullscreen button on embedded YouTube videos (Chrome Extension)
var checkDocument = function( doc )
{
var frames = doc.getElementsByTagName( "iframe" );
for( var i = 0, l = frames.length; i < l; i++ )
checkIframe( frames[i] );
};
var checkIframe = function(iframe)
{
if( iframe.src.indexOf( "https://www.youtube" ) == 0 )
{
iframe.src = iframe.src.replace( "?fs=0", "" ).replace( "&fs=0", "" ).replace( "?controls=0", "?controls=1" ).replace( "&controls=0", "&controls=1" );
iframe.setAttribute( "allowfullscreen", "0" );
if( iframe.hasAttribute( "donotallowfullscreen" ) )
iframe.removeAttribute( "donotallowfullscreen" );
}
else if( iframe.hasAttribute( "data-src" ) && iframe.getAttribute( "data-src" ).indexOf( "https://www.youtube" ) == 0 )
{
iframe.setAttribute( "data-src", iframe.getAttribute( "data-src" ).replace( "?fs=0", "" ).replace( "&fs=0", "" ).replace( "?controls=0", "?controls=1" ).replace( "&controls=0", "&controls=1" ) );
iframe.setAttribute( "allowfullscreen", "0" );
if( iframe.hasAttribute( "donotallowfullscreen" ) )
iframe.removeAttribute( "donotallowfullscreen" );
}
else if( iframe.src.indexOf( "https://twitter.com" ) == 0 )
{
// Support for YouTube embedded videos on Twitter
if( iframe.src.indexOf( "cardname=player" ) > 0 )
iframe.addEventListener( "load", iframeLoaded );
}
};
var iframeLoaded = function( e )
{
e.target.removeEventListener( "load", iframeLoaded );
checkDocument( e.target.contentDocument || e.target.contentWindow.document );
};
var observerCallback = function( mutationsList, observer )
{
for( var mutation of mutationsList )
{
if( mutation.type == 'childList' )
{
var addedNodes = mutation.addedNodes;
for( var i = 0; i < addedNodes.length; i++ )
{
if( addedNodes[i].nodeName == "IFRAME" )
checkIframe( addedNodes[i] );
}
}
}
};
checkDocument( document );
var observer = new MutationObserver( observerCallback );
observer.observe( document.body, { childList: true, subtree: true } );
{
"manifest_version": 2,
"name": "YouTube Fullscreen Button",
"version": "1.0",
"description": "Bring back the fullscreen button to embedded YouTube videos",
"content_scripts": [{
"js": ["content.js"],
"matches": ["https://*/*", "http://*/*"]
}]
}
@yasirkula
Copy link
Author

UPDATE: restored the fullscreen button on embedded YT videos on Twitter.

@ashergz
Copy link

ashergz commented Nov 28, 2022

This isn't doing anything.

@yasirkula
Copy link
Author

@ashergz I haven't used this extension in a long while so I can't concur myself but I believe you. Probably this feature's format has changed (i.e. it's no longer "fs=0" or "controls=0"). I am not planning to update this gist soon but thank you for letting future readers know about this issue 🙂)

@ashergz
Copy link

ashergz commented Nov 28, 2022

Speaking of those who stumble here in search of a solution, here's one that actually works: https://greasyfork.org/en/scripts/829-restore-youtube-embed-defaults

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment