-
-
Save Jakobimatrix/0f6f91af94c3e787df88ffa46f0709fa to your computer and use it in GitHub Desktop.
// To run, install GreaseMonkey or TamperMonkey extension in your browser | |
// Copy this code into new user script, and enable | |
// !! If the toggle button is not been toggled automaticly: | |
// !! That means youtube changed for reasons the id of the toggle button again. | |
// !! In Chrome/Firefox: right-click the toggle button and choose "Inspect Element (Q)" | |
// !! You will find something like "<div id="TOGGLE_BUTTON_ID" class="toggle-button...." | |
// !! Copy whatever TOGGLE_BUTTON_ID is and replace down in "function disableAfterLoad()" the place holder named "TOGGLE_BUTTON_ID". | |
// !! Save script ctrl+S and reload youtube page. | |
// ==UserScript== | |
// @name Disable Youtube autoplay | |
// @version 1.3 | |
// @description This script turns off Youtube's newest autoplay feature after the page loads | |
// @author Jeff Bellucci, Jakob Wandel | |
// @match *://www.youtube.com/* | |
// @run-at document-end | |
// @grant none | |
// ==/UserScript== | |
(function() { | |
'use strict'; | |
let debug = false; | |
let bottonIds = []; | |
let i = 0; | |
let MAX_TRIES = 5; | |
bottonIds[i++] = 'toggle'; | |
bottonIds[i++] = 'toggleButton'; | |
bottonIds[i++] = 'improved-toggle'; | |
bottonIds[i++] = 'TOGGLE_BUTTON_ID'; | |
function debugMsg(msg){ | |
if(debug){ | |
console.log(msg); | |
} | |
} | |
//https://stackoverflow.com/questions/2705583/how-to-simulate-a-click-with-javascript | |
function eventFire(el, etype){ | |
if (el.fireEvent) { | |
el.fireEvent('on' + etype); | |
} else { | |
var evObj = document.createEvent('Events'); | |
evObj.initEvent(etype, true, false); | |
el.dispatchEvent(evObj); | |
} | |
} | |
function disableAfterLoad(try_nr) { | |
for (let key in bottonIds) { | |
let autoplayToggle = document.getElementById(bottonIds[key]); | |
if (autoplayToggle) { | |
debugMsg("I found a Element called '"+bottonIds[key]+"'. I will now try to uncheck it:"); | |
if (autoplayToggle.hasAttribute('checked')) { | |
eventFire(autoplayToggle, 'click'); | |
debugMsg("I assume, that if '"+bottonIds[key]+"' was the right Element, its now untoggled!"); | |
delete bottonIds[key]; | |
return; | |
}else{ | |
debugMsg("The element '"+bottonIds[key]+"' has no attribute checked. So I don't click it and check the other elements but not this one anymore."); | |
delete bottonIds[key]; | |
} | |
} else { | |
debugMsg("I could not finde an Element called '"+bottonIds[key]+"'. Maybe the site is not loaded jet? I will try again in 1 second."); | |
} | |
} | |
if(try_nr > 0){ | |
try_nr--; | |
setTimeout(function() { | |
disableAfterLoad(try_nr); | |
}, 1000); | |
} | |
} | |
disableAfterLoad(MAX_TRIES); | |
})(); |
Ah, Yes sorry this scripts stops only YouTube from auto playing the next video. But your problem can be solved within the Browser Settings:
Firefox: https://support.mozilla.org/en-US/kb/block-autoplay (thats per default activated)
Chrome: "Launch Chrome and in the Address Bar type: chrome://flags/#autoplay-policy and hit Enter. That will bring you directly to the flag that you need to change. From the drop-down box, change the setting from Default to “Document user activation is required” and relaunch the browser." (source: https://www.groovypost.com/howto/disable-autoplay-videos-on-sites-in-google-chrome/)
Thanks. But this only works when the tab is in the background. As soon as I put it in foreground it plays.
Well, the userscript works. All is good. :)
Oh sorry, I misunderstood. I thought this would stop clips from playing automatically when I load the page.
(This is the simplest, working one I found: https://greasyfork.org/en/scripts/36732-autoplay-disabled-for-youtube)