// ==UserScript== // @name 9gag video enhancer // @namespace http://tampermonkey.net/ // @version 0.3 // @description try to take over the world! // @author Llorx // @match https://9gag.com/* // @grant none // @downloadURL none // ==/UserScript== // from 0 to 100 var VOUME_LEVEL = 50; function onFirstPlay(e) { e.target.removeEventListener("play", onFirstPlay); e.target.click(); // element click instead of setting the video muted attribute, so 9gag intertal state also changes to umnmuted e.target.volume = VOUME_LEVEL/100; } (function() { function checkVideos(node) { if (node.querySelectorAll) { var videos = node.querySelectorAll("video"); for (var i = 0; i < videos.length; i++) { videos[i].setAttribute("controls", "1"); if (VOUME_LEVEL > 0) { var audiotoggle = videos[i].parentNode.querySelector(".sound-toggle"); if (audiotoggle) { videos[i].addEventListener("play", onFirstPlay); } } var drag = videos[i].closest(".badge-track"); if (drag) { drag.addEventListener("dragstart", function(e) { e.preventDefault(); }); } var els = videos[i].parentNode.querySelectorAll(".sound-toggle,.length"); for (var ii = 0; ii < els.length; ii++) { els[ii].style.display = "none"; } } } } var targetNode = document.body; var config = { childList: true, subtree: true }; var callback = function(mutationsList) { for (var i = 0; i < mutationsList.length; i++) { for (var ii = 0; ii < mutationsList[i].addedNodes.length; ii++) { checkVideos(mutationsList[i].addedNodes[ii]); } } }; var observer = new MutationObserver(callback); observer.observe(targetNode, config); checkVideos(targetNode); })();