您需要先安装一个扩展,例如 篡改猴、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或关注我们的公众号极客氢云获取最新地址