您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
This plugin press "Show more" button when display it on your browser by scroll.
当前为
- // ==UserScript==
- // @name Auto show more for YouTube
- // @name:ja YouTubeの「もっと見る」ボタンを自動で押す
- // @description This plugin press "Show more" button when display it on your browser by scroll.
- // @description:ja YouTube.comの「もっと見る」ボタンが、スクロールによって画面に表示された瞬間、自動で押されます。
- // @namespace https://twitter.com/sititou70
- // @license MIT
- // @include /https*:\/\/www\.youtube\.com\/.*/
- // @version 2.1.0
- // @grant none
- // ==/UserScript==
- //settings
- let scroll_event_interval = 100;
- const adjust_scroll_px = 0;
- const targets = [
- {
- name: "Comment show more button",
- selector: "ytd-expander.ytd-comment-replies-renderer > paper-button#more",
- },
- {
- name: "Watch more related button",
- selector: "yt-next-continuation.ytd-watch-next-secondary-results-renderer > paper-button",
- },
- {
- name: "Video info show more button",
- selector: "ytd-expander.style-scope.ytd-video-secondary-info-renderer > paper-button#more",
- },
- ];
- //global variables
- let clicked_buttons = [];
- //utils
- const user_agent = window.navigator.userAgent.toLowerCase();
- const fireClickEvent = (elem) => {
- if( user_agent.match(/(msie|MSIE)/) || user_agent.match(/(T|t)rident/) ) {
- elem.fireEvent("onclick");
- } else {
- const event = document.createEvent("MouseEvents");
- event.initEvent("click", true, true);
- elem.dispatchEvent(event);
- }
- };
- const getTargetButtons = () =>{
- return targets
- .map(x => document.querySelectorAll(x.selector))
- .reduce((s, x) => [...s, ...x]);
- };
- //events
- let waiting_for_scroll_event_interval = false;
- document.addEventListener("scroll", function(){
- if(waiting_for_scroll_event_interval)return;
- waiting_for_scroll_event_interval = true;
- setTimeout(() => waiting_for_scroll_event_interval = false, scroll_event_interval);
- getTargetButtons().forEach(x => {
- if(clicked_buttons.includes(x))return;
- if(x.getBoundingClientRect().y - window.innerHeight + adjust_scroll_px < 0){
- clicked_buttons.push(x);
- fireClickEvent(x);
- //highlight clicked button for debugging
- //x.style.border = "1px solid #f00";
- }
- });
- });
- document.addEventListener("click", function(e){
- let target = e.target;
- while(target !== document.body){
- if(target.tagName === "A"){
- clicked_buttons = [];
- return;
- }
- target = target.parentElement;
- }
- });