您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Provides click-to-play functionality for YouTube (disables auto-play).
// ==UserScript== // @name YouTube - click to play // @namespace monnef.tk // @include https://www.youtube.com/* // @version 2 // @grant none // @require http://code.jquery.com/jquery-2.1.3.min.js // @run-at document-start // @description Provides click-to-play functionality for YouTube (disables auto-play). // ==/UserScript== /* Few Notes ----------- This script *may* work with other html5 players, you have to test it on your own. Mutation observer is not used, b/c GreaseMonkey thrashes all events for it... */ var debug = false; function log(msg){ if(debug) console.log(msg); } log("installing video hook"); HTMLMediaElement.prototype._oldPlay = HTMLMediaElement.prototype.play; HTMLMediaElement.prototype.play = function() { var unlocked = this._playUnlocked !== undefined; log("intercepted play request, " + unlocked); if (unlocked) this._oldPlay(); }; this.$ = this.jQuery = jQuery.noConflict(true); function insertUnlockers(sc) { log("inserting unlocker"); var ve = $("video", sc); log("got " + ve.length + " video element(s)."); ve.each(function() { var elem = this; $(this).attr("data-uv-processed", "true"); var unlockerLink = $("<a href='#'>Unlock video and play!</a>").click(function() { log("unlocking and playing"); elem._playUnlocked = true; elem.play(); $(this).parent().hide(); return false; }).css("font-size", "15pt"); $(this).before(unlockerLink); unlockerLink.wrap("<div></div>"); unlockerLink.parent().css("height", "50px").css("width","220px").css("background-color", "rgba(255, 255, 255, 0.8)").css("color", "black").css("position", "relative").css("z-index", "950").css("margin", "20px").css("padding", "10px").css("border", "1px solid #aaa").append("<p style='margin-top:10px'>Created by <a href='http://monnef.tk'>monnef</a>.</p>"); }); } var inserting = false; function installDomEventListener() { document.addEventListener("DOMNodeInserted", function(e) { if(inserting){ log("Preventing recursion."); return; } inserting = true; var nodeRaw = e.target; var node = $(nodeRaw); if (nodeRaw.nodeName.toLowerCase() == "video" || $("video", node).length > 0) { log("found"); var parentNode = $(node.parent()); if (!node.attr("data-uv-processed") && !parentNode.attr("data-uv-processed")) { insertUnlockers(parentNode); } } inserting = false; }, false); } installDomEventListener();