您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
disable autoplay and unload player
当前为
- // ==UserScript==
- // @name click_to_play@youtube
- // @namespace click_to_play@youtube
- // @namespace https://greasyfork.org/ja/scripts/9886
- // @homepageURL https://greasyfork.org/ja/scripts/9886
- // @license http://creativecommons.org/licenses/by-nc-sa/4.0/
- // @description disable autoplay and unload player
- // @include http://*
- // @include https://*
- // @exclude https://www.youtube.com/*
- // @author noi
- // @version 1.05
- // @grant GM_log
- // ==/UserScript==
- /**************************************************************
- [about]
- Stop youtube video autoplay, and unload the players.
- It will display a thumbnail image instead.
- youtubeの埋め込み動画を読みこまないように変更し、
- 代わりにサムネイル画像を表示します。
- Firefoxのプラグイン「click-to-play」はHTML5をブロックしないので、
- スクリプトを作成。
- ****************************
- References
- No Embed Youtube @author eight
- https://greasyfork.org/ja/scripts/1590
- ****************************
- history
- 06/07/2015 - v1.05 起動にディレイ追加
- 05/17/2015 - v1.04 DOM操作削減
- 05/15/2015 - v1.03 サムネ画像のサイズ修正
- 05/15/2015 - v1.02 v1.01のバグ修正
- 05/15/2015 - v1.01 再生ボタンを変更
- 05/15/2015 - v1.00 release
- **************************************************************/
- "use strict";
- var number = 0;
- var xpath = [
- '//iframe[contains(@src,"youtube.com/embed/")]|',
- '//iframe[contains(@src,"youtube.com/v/")]|',
- '//embed[contains(@src,"youtube.com/v/") and not(ancestor::object)]|',
- '//object[./param[contains(@value,"youtube.com/v/")]]',
- ].join('');
- var playButton = '<div style="width:100%;height:100%;background:url(\'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAAA8CAMAAADG+c2+AAAAsVBMVEUAAAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApKSnOzs47OzsAAAD8/Pytra0aGhqSkpKHh4cDAwPh4eFcXFzGxsYxMTH7+/ukpKQSEhLv7+99fX0CAgLb29tQUFD+/v6+vr7m5ub5+fmbm5sNDQ3r6+tycnLV1dVGRkb///+2trYICAj29vZmZmYhISEAAADz8/MgICDz8/P///91kYKsAAAAOnRSTlOZACQBgkZyiwSRTzGHU1Rko+GoiP3Rn8bCmeyy3aX7zZ30vpnpr/7Z7/rKnPK65av+1Zv4tqEy96H2cK1dPgAAARxJREFUeF7N2OlOwkAUR/E/XZdpi4oLKOAGuIGKu/P+D6aN6YifjOkxmd8DnISktPde9VphUCdRrj/Lo6QKQpdpg1mcqoM0zn4GXwbqqDSbwUKA4jvYF6LfBgtBiq+gEcY0wawUpsw+g7FAcU9hKlAaKhAqUC1UpUSoRJFQkXKRfs1t74hld/f22aC1r8MRGWwcHqHBxngCB+30+AQKOqdn51DQmc3hoL2/2IKCztX1DRR0lisq6NzewUG7WD9DQefx4AEKOpdPeNDnn7xYv/n82CxX9F/P55fDbE6/YH3+BIwnPn9G34cjD0YRcFjCxzl84ORH4kqoCl8r8MWHXs3w5ZFfb/kFnD8R8EeMhinV0cD80yEIOVXVG6eqD/g5Xi0pxQ0LAAAAAElFTkSuQmCC\') no-repeat center center;"></div>';
- var players = {};
- var blockEmbed = function(node){
- var result = document.evaluate(xpath, node, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
- for(var i=0,j=result.snapshotLength;i<j;i++){
- var ele = result.snapshotItem(i);
- if(ele.hasAttribute('c2p')) continue;
- var url = ele.src; //iframe or embed
- //object
- if(!url){
- for(var x=0,y=ele.childNodes.length; x<y; x++){
- var param = ele.childNodes[x];
- if(param.nodeName == "PARAM" && param.getAttribute("name") == "movie"){
- url = param.getAttribute("value");
- break;
- }
- }
- }
- if(!url) continue;
- var parent = ele.parentNode;
- var id = url.match(/(embed|v)\/(.+?)(\?|&|$)/)[2];
- var movieUrl = "https://www.youtube.com/watch?v=" + id;
- var src = location.protocol + '//img.youtube.com/vi/' + id + '/mqdefault.jpg';
- var eleW = ele.style.width || ele.width;
- var eleH = ele.style.height || ele.height;
- var thumbnail = document.createElement("div");
- thumbnail.className = 'c2p_thumbnail';
- thumbnail.setAttribute('num',number);
- thumbnail.innerHTML = playButton;
- thumbnail.style = 'min-width:320px;min-height:180px;width:'+ eleW +'px;height:'+ eleH +'px;background:url(' + src + ') no-repeat center center ; background-size: 100% 100%;';
- thumbnail.title = 'click to play!';
- parent.insertBefore(thumbnail,ele);
- ele.setAttribute('c2p','done')
- players[number] = ele;
- parent.removeChild(ele);
- var unBlock = function(e){
- var thumb = e.target;
- if(!thumb.id.match(/^c2p_/)) thumb = thumb.parentNode;
- thumb.removeEventListener('click',unBlock,false);
- var num = thumb.getAttribute('num');
- thumb.parentNode.replaceChild(players[num],thumb);
- delete players[num];
- };
- thumbnail.addEventListener('click',unBlock,false);
- // thumbnail.insertAdjacentHTML('beforebegin','<a class="c2p_embedUrl" href="' + movieUrl + '" target="_blank">' + movieUrl + '</a>');
- number++;
- }
- };
- var observer = new MutationObserver(function(mutations){
- for(var i=0,j=mutations.length;i<j;i++){
- var m = mutations[i];
- if(m.type != "childList") return;
- for(var x=0,y=m.addedNodes.length;x<y;x++){
- blockEmbed(m.addedNodes[x]);
- }
- }
- });
- SetTimeout(function(){
- blockEmbed(document.documentElement);
- observer.observe(document.body, {childList: true,subtree: true});
- },1000);
- var onEventUnload = function(){
- window.removeEventListener("beforeunload", onEventUnload,false);
- observer.disconnect();
- observer = xpath = blockEmbed = null;
- };
- window.addEventListener('beforeunload',onEventUnload, false);