您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Make "video" elements click to play
// ==UserScript== // @name html5 videos: Click To Play // @namespace ChoGGi.org // @description Make "video" elements click to play // @include http://* // @include https://* // @version 0.3 // @grant none // ==/UserScript== (function() { 'use strict'; //skip these domains (allow autoplay) function checkDomain() { let d = (window.location != window.parent.location) ? document.referrer : document.location.href; if (d.includes("example.com") === false && //d.includes("youtube.com") === false && //d.includes("gfycat.com") === false && //d.includes("escapistmagazine.com") === false && d.includes("example.net") === false) return true; } //listen for newly added videos let MutationObserver = window.MutationObserver; let vidObserver = new MutationObserver(mutationHandler); let observerConfig = { childList:true, subtree:true }; //activated on new elements function mutationHandler(mutationRecords) { mutationRecords.forEach(function(mutation) { if (mutation.type == "childList" && typeof mutation.addedNodes == "object" && mutation.addedNodes.length) { for (let i = 0, length = mutation.addedNodes.length; i < length; ++i) { let node = mutation.addedNodes[i]; //check if it's a video node if (node.nodeType === 1 && node.nodeName === "VIDEO") { //if it's a video we added; remove the function below if (node.ChoGGi_autoplayVideo === 1) { node.onplaying = null; } else { //have to do this for some annoying sites (twitch/youtube) else we get audio playing with no video node.onplaying = function() { convertVideo(node); }; } } } } }); } function iterateVideos() { let vidList = document.getElementsByTagName("video"); for (let i = 0; i < vidList.length; i++) { convertVideo(vidList[i]); } } //switch the video out with a button function convertVideo(video) { //get position/size of video element let style = window.getComputedStyle(video, null); //build a button to replace the video let clicker = document.createElement("button"); clicker.style = "z-index: 99999; font-size: 15px; cursor: pointer; position: " + style.position + "; top: " + style.top + "; left: " + style.left +"; width: " + style.width + "; height: " + style.height + ";"; clicker.innerHTML = "Play Video"; clicker.className = "ChoGGi_autoplayToggle"; //store the video as part of the button clicker.ChoGGi_videoObject = video; //fire this function when we click the button clicker.onclick = function() { let video = this.ChoGGi_videoObject; //we don't want the vidObserver to catch this video video.ChoGGi_autoplayVideo = 1; //add default controls to video //video.setAttribute("controls",""); //add video back to webpage this.parentNode.appendChild(video); //remove any extra buttons added (thanks youtube) let childList = video.parentNode.children; for (let i = 0; i < childList.length; i++) { if (childList[i].className === "ChoGGi_autoplayToggle") this.parentNode.removeChild(childList[i]); } //video re-added so remove the button (it was probably removed by the above) try { this.parentNode.removeChild(this); }catch(e){} //if we're clicking the button we want to watch the video video.play(); }; //add button to page video.parentNode.appendChild(clicker); //remove video from page video.parentNode.removeChild(video); } //are we skipping this page? if (checkDomain()) { //wait before checking for video elements window.setTimeout(function() { iterateVideos(); }, 250); //add listener to check for js added vids vidObserver.observe(document,observerConfig); } })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址