// ==UserScript== // @name 电影天堂,阳光电影去掉广告与高亮高分电影 // @namespace https://github.com/yujinpan/tampermonkey-extension // @version 1.6 // @license MIT // @description 主要是在电影天堂,阳光电影网站去掉页面上的广告(隐藏广告比较烦)。还有就是标记高分和获奖的电影,方便找到精华电影。 // @author yujinpan // @match http*://*.dytt8.net/* // @match http*://dytt8.net/* // @match http*://*.ygdy8.com/* // @match http*://ygdy8.com/* // @match http*://*.dy2018.com/* // @match http*://dy2018.com/* // @match http*://*.dydytt.net/* // @match http*://dydytt.net/* // @run-at document-start // @downloadURL none // ==/UserScript== /** * 已有功能列表: * - 功能1:删除第一次加载出现的广告 * - 功能2:标记高分电影 * - 功能3:去掉搜索框的广告跳转 * - 功能4:去掉中间页面上的flash广告 * - 功能5:删除右下角的flash广告 * - 功能6:去掉按任意键弹出广告 * - 功能7:去掉首次点击任何地方弹出广告 * - 功能8:删除所有图片广告 * - 功能9:删除【紧急通知】 * - 功能10:移除附加内容(跳转/广告) */ class ImgControl { static style; static hide() { ImgControl.style = document.createElement('style'); ImgControl.style.innerHTML = 'img {display: none!important}'; document.head.prepend(ImgControl.style); } static show() { ImgControl.style && ImgControl.style.remove(); } } start(); function start() { removeWrite(); ImgControl.hide(); document.addEventListener('DOMContentLoaded', function () { removeFirst(); removeKeyboardAD(); removeFlash(); markHighGrade(); removeImages().then(function () { ImgControl.show(); }); }); } // 删除第一次加载出现的广告 // 删除右下角的flash广告 // 删除所有图片广告 // 删除【紧急通知】 function removeImages() { return new Promise(resolve => { removeImages.counter = (removeImages.counter || 0) + 1; console.log('第' + removeImages.counter + '次查找广告。'); var bodyChildren = document.body.children; // 查找全屏链接广告 var links = document.querySelectorAll('body>a'); if (links.length) { links.forEach(item => item.remove()); console.log(`找到全屏链接广告!成功删除!`); } // 查找右下角flash窗口 var flash = bodyChildren[bodyChildren.length - 1]; if (flash && flash.style.position === 'fixed') { flash.remove(); console.log('找到右下角flash窗口!成功删除!'); } var images = document.body.querySelectorAll('img'); if (images.length) { Array.from(images).forEach(item => { if (item.nextSibling && item.nextSibling.tagName === 'BR') return; var parent = item.parentNode; var grantParent = parent ? parent.parentNode : null; if (parent) { if (parent.tagName === 'A') parent.remove(); if (grantParent && grantParent.parentNode === document.body) grantParent.remove(); } item.remove(); // 移除广告后是空盒子也移除掉 if (parent && !parent.childNodes.length) parent.remove(); if (grantParent && !grantParent.childNodes.length) grantParent.remove(); }); console.log('找到图片广告!成功删除!'); } var noticeElm = document.body.querySelector('div[class^="notice"]'); if (noticeElm) { noticeElm.remove(); console.log('找到【紧急通知】!成功删除!'); } // 超过 50 次就不再查找了 if (removeImages.counter > 50) { return resolve(); } else { setTimeout(() => { resolve(removeImages()); }); } }); } // 标记高分电影 function markHighGrade() { var markWords = ['高分', '获奖']; var allText = document.querySelectorAll('a, p'); var textMark = function (text, markWords) { markWords.forEach(function (word) { text = text.replace(new RegExp(word), '' + word + ''); }); return text; }; allText.forEach(function (aElem) { aElem.innerHTML = textMark(aElem.innerHTML, markWords); }); } // 去掉中间页面上的flash广告 function removeFlash() { var containWidth = document.querySelector('.contain').clientWidth; // 递归移除父级,除与广告的尺寸不一致就停止 // 误差范围宽度30px,高度10px var removeParentUntilDiffSize = function (elem) { var elemW = elem.clientWidth; var elemH = elem.clientHeight; var parent = elem.parentNode; var parentW = parent.clientWidth; var parentH = parent.clientHeight; if (checkSize(parentW, elemW, 30) && checkSize(parentH, elemH, 10)) { removeParentUntilDiffSize(parent); } else { elem.remove(); } }; // 校验大小是否在误差之内 var checkSize = function (current, target, range) { return current > target - 30 && current < target + 30; }; document.querySelectorAll('iframe').forEach(function (elem) { if (elem.clientWidth === containWidth) { removeParentUntilDiffSize(elem); } else { elem.src = ''; } }); } // 去掉按任意键弹出广告 function removeKeyboardAD() { document.addEventListener('keydown', function (e) { e.stopPropagation(); }, true); } // 去掉首次点击任何地方弹出广告 function removeFirst() { document.addEventListener('click', function (e) { e.stopPropagation(); }, true); } // 移除附加内容(跳转/广告) function removeWrite() { document.write = () => {}; document.writeln = () => {}; }