您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
简单高效的youtube去广告脚本,拒绝花里胡哨。如果你有一丢丢编程知识,可以尝试为常量cssSeletorArr定义元素。如果你有好的建议可以联系我zgh0118c@gmail.com。
当前为
- // ==UserScript==
- // @name youtube去广告
- // @namespace http://tampermonkey.net/
- // @version 1.0
- // @description 简单高效的youtube去广告脚本,拒绝花里胡哨。如果你有一丢丢编程知识,可以尝试为常量cssSeletorArr定义元素。如果你有好的建议可以联系我zgh0118c@gmail.com。
- // @author FuckAD
- // @match https://www.youtube.com/*
- // @icon https://www.google.com/s2/favicons?sz=64&domain=youtube.com
- // @grant none
- // @license MIT
- // ==/UserScript==
- (function() {
- 'use strict';
- //界面广告选择器
- const cssSeletorArr = [
- `ytd-rich-item-renderer.style-scope.ytd-rich-grid-row:has(.ytd-display-ad-renderer)`,//首页广告
- `.video-ads.ytp-ad-module:has(.ytp-ad-text-overlay)`,//播放器底部文本广告
- `#related #player-ads`,//播放页评论区右侧推广广告
- `#related ytd-ad-slot-renderer`,//播放页评论区右侧视频推荐广告
- ];
- /**
- * 生成去除广告的css元素style并附加到HTML节点上
- * @param {String} styles 样式文本
- * @param {String} styleId 元素id
- * @return {undefined}
- */
- function generateRemoveAdHTMLElement(styles,styleId) {
- //如果已经设置过,退出
- if (document.getElementById(styleId)) {
- return false
- }else{
- style.id = styleId;
- }
- //设置移除广告样式
- let style = document.createElement(`style`);//创建style元素
- (document.querySelector(`head`) || document.querySelector(`body`)).appendChild(style);//将节点附加到HTML
- if (style.styleSheet) {
- style.styleSheet.cssText = styles;//for ie浏览器有更加方便的api
- } else {
- style.appendChild(document.createTextNode(styles));//for w3c
- }
- }
- /**
- * 生成去除广告的css文本
- * @param {Array} cssSeletorArr 待设置css选择器数组
- * @return {String}
- */
- function generateRemoveAdCssText(cssSeletorArr){
- cssSeletorArr.forEach((seletor,index)=>{
- cssSeletorArr[index]=`${seletor}{display:none!important}`;//遍历并设置样式
- });
- return cssSeletorArr.join(" ");//拼接成字符串
- }
- /**
- * 去除播放中的广告
- * @return {undefined}
- */
- function removePlayerAd()
- {
- let timerId =setInterval(function(){
- //拥有跳过按钮的广告
- let skipButton = document.querySelector(`.ytp-ad-skip-button`);
- if(skipButton)
- {
- skipButton.click();// 跳过广告
- return false;//防止后面错判
- }
- //片头短广告
- let adShortMsg = document.querySelector(`.video-ads.ytp-ad-module .ytp-ad-player-overlay`);
- if(adShortMsg){
- location.href = location.href;//重新加载
- clearInterval(timerId);
- }
- }, 16.666666);//细节,主流屏幕刷新率为60hz,此设置与16毫秒每帧对应
- }
- /**
- * main函数
- */
- function main(){
- generateRemoveAdHTMLElement(generateRemoveAdCssText(cssSeletorArr),`removeAd`);//移除界面中的广告
- removePlayerAd();//移除播放中的广告
- }
- main();
- })();