您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Hides watched videos from your YouTube subscriptions page
当前为
// ==UserScript== // @name YouTube: Hide Watched Videos // @namespace http://www.globexdesigns.com/ // @version 0.1 // @description Hides watched videos from your YouTube subscriptions page // @author Evgueni Naverniouk // @grant GM_addStyle // @include http://*.youtube.com/* // @include http://youtube.com/* // @include https://*.youtube.com/* // @include https://youtube.com/* // ==/UserScript== (function (undefined) { GM_addStyle("\ .GR-WATCHED {\ display: none;\ }\ .GR-LABEL {\ color:#666;\ cursor:pointer;\ display:inline-block;\ margin: 5px 10px 5px 20px;\ }\ .GR-LABEL input {\ vertical-align: -2px;\ }\ "); // =========================================================== var findWatchedElements = function () { return document.getElementsByClassName('watched'); }; // =========================================================== var findParentByClass = function(el, cls) { while ((el = el.parentElement) && !el.classList.contains(cls)); return el; }; // =========================================================== var findToolbar = function () { var toolbar = document.getElementsByClassName('feed-header'); if (!toolbar || !toolbar.length) return; return toolbar[0]; }; // =========================================================== var isCheckboxAlreadyThere = function () { var checkbox = document.getElementsByClassName('GR-LABEL'); return checkbox && checkbox.length; }; // =========================================================== var addClassToWatchedRows = function () { var items = findWatchedElements() || []; for (var i = 0, l = items.length; i < l; i++) { var item = items[i]; var row = findParentByClass(item, 'feed-item-container'); if (localStorage.GRWATCHED === 'true') { row.classList.add('GR-WATCHED'); } else { row.classList.remove('GR-WATCHED'); } }; }; // =========================================================== var addCheckboxButton = function () { if (isCheckboxAlreadyThere()) return; // Find toolbar var toolbar = findToolbar(); if (!toolbar) return; // Add label var label = document.createElement('label'); label.classList.add('GR-LABEL'); // Add checkbox var checkbox = document.createElement('input'); checkbox.type = 'checkbox'; checkbox.checked = localStorage.GRWATCHED === 'true' ? 'checked' : null; checkbox.addEventListener('change', function (event) { localStorage.GRWATCHED = event.target.checked; addClassToWatchedRows(); }); label.appendChild(checkbox); // Add label text var textnode = document.createTextNode("Hide Watched"); label.appendChild(textnode); toolbar.appendChild(label); }; var run = function () { addClassToWatchedRows(); addCheckboxButton(); }; // =========================================================== // Hijack all XHR calls var send = XMLHttpRequest.prototype.send; XMLHttpRequest.prototype.send = function (data) { this.addEventListener("readystatechange", function () { if ( // If navigated to subscriptions page this.responseURL.indexOf('feed/subscriptions') > 0 || // Anytime more videos are fetched -- re-run script this.responseURL.indexOf('browse_ajax?action_continuation') > 0 ) { setTimeout(function () { run(); }, 0); } }, false); send.call(this, data); } // =========================================================== run(); }());