Greasy Fork

Greasy Fork is available in English.

网易邮箱广告屏蔽

屏蔽网易邮箱的邮箱推荐、顶部导航的网易严选,应用中心,左侧导航的办公模板广告,支持163\126邮箱

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         网易邮箱广告屏蔽
// @namespace    http://tampermonkey.net/
// @version      2021121210070451
// @description  屏蔽网易邮箱的邮箱推荐、顶部导航的网易严选,应用中心,左侧导航的办公模板广告,支持163\126邮箱
// @author       qixiuqx
// @match        https://mail.163.com/*
// @match        https://mail.126.com/*
// @match        https://mail.yeah.net/*
// @match        https://yeah.net/*
// @match        https://hw.mail.163.com/*
// @match        https://hw.mail.126.com/*
// @icon         https://mail.163.com/favicon.ico
// @grant        none
// @resource     elementCSS  https://at.alicdn.com/t/font_2872618_ru3rtyzdxlp.css?spm=a313x.7781069.1998910419.39&file=font_2872618_ru3rtyzdxlp.css
// ==/UserScript==

(function () {
	"use strict";
	// 默认全部屏蔽,之后的数据保存到本地
	let userSettingsArr = [];
	let arr = JSON.parse(localStorage.getItem("adUserSettingsArr")) || []; //默认屏蔽所有的广告,
	arr.length > 0
		? (userSettingsArr = arr)
		: (userSettingsArr = [true, true, true, true, true]);

	// 页面加载完成,加载屏蔽
	window.onload = function () {
		// 界面中的设置按钮
		userSettings();
		// 隐藏登录页广告
		homeAdEl();
		// 页面广告元素隐藏
		pageAdEl();
		// 导航
		navItemEl();
	};

	/**
	 *添加head  的link样式以引入字体图标
	 */
	function addHeadLink() {
		let head = document.querySelector("head");
		let headEl = document.createElement("link");
		headEl.rel = "stylesheet";
		headEl.href =
			"https://at.alicdn.com/t/font_2872618_ru3rtyzdxlp.css?spm=a313x.7781069.1998910419.39&file=font_2872618_ru3rtyzdxlp.css";
		head.appendChild(headEl);
		let styleEl = addElStyle();
		head.appendChild(styleEl);
	}

	/**
	 *
	 * 添加css样式方法,脚本的所有css 都将在这里定义
	 * @returns style 标签
	 */
	function addElStyle() {
		let style = document.createElement("style");
		style.type = "text/css";
		style.innerHTML = `

    /* 设置按钮 */
    #ad_user_settings {
      position: fixed;
				right: 270px;
				top: 10px;
				z-index: 999;
				width: 30px;
				height: 30px;
				font-size: 30px;
				text-align: center;
				line-height: 30px;
        color: #1c1919;
        cursor: pointer;
    }
    /* 设置盒子 */
    .ad_user_setting_box {
      display:none;
      position: absolute;
      top: 100%;
      right: -150%;
      width: max-content;
      /* height: max-content; */
      background-color: #fff;
      border: 1px solid #d2d2d2;
      border-radius: 5px;
      font-size: 14px;
      text-align-last: left;
    }
    /* 设置盒子 在鼠标经过设置按钮的时候显示  离开的时候隐藏 */
    #ad_user_settings:hover .ad_user_setting_box {
      display: block;
    }
    .ad_user_setting_box:hover {
      display: block;
    }


    /* 设置item */
    .user_settings_box_item {
      padding: 0 10px;
      color: #444;
      width: max-content;
      height: max-content;
      display: flex;
      justify-content: center;
      align-items: center;
    }
    .user_settings_box_item label {
      margin-left: 5px;
    }
    .user_settings_box_tip{
      padding: 0 10px;
      font-size:12px;
      color: 999;
    }
    `;

		return style;
	}

	/**
     设置按钮
	 */
	function userSettings() {
		//引入字体图标
		addHeadLink();
		let body = document.querySelector("body");
		let userSettingsEl = document.createElement("div");
		userSettingsEl.id = "ad_user_settings";
		userSettingsEl.title = "网易邮箱广告屏蔽设置";
		userSettingsEl.classList = "iconfont icon-setting-fill";
		body.appendChild(userSettingsEl);
		userSettingsBox(userSettingsEl);
	}

	/**
	 * 设置盒子
	 */
	function userSettingsBox(fatherEl) {
		let settingBox = document.createElement("div");
		settingBox.classList = "ad_user_setting_box";
		fatherEl.appendChild(settingBox);
		userSettingsBoxItem(settingBox);
	}

	/**
	 * 设置的项目
	 */
	function userSettingsBoxItem(fatherEl) {
		fatherEl.innerHTML = `
		    <div class="user_settings_box_item">
		    <input type="checkbox" name="" id="yanxuan" class="user_select_ipt_checkbox" />
		    <label for="yanxuan">屏蔽 网易严选</label>
		    </div>
		    <div class="user_settings_box_item">
		      <input type="checkbox" name="" id="applicationCenter" class="user_select_ipt_checkbox"/>
		      <label for="applicationCenter">屏蔽 应用中心</label>
		    </div>
		    <div class="user_settings_box_item">
		      <input type="checkbox" name="" id="addressBook" class="user_select_ipt_checkbox"/>
		      <label for="addressBook">屏蔽 通讯录</label>
		    </div>
		    <div class="user_settings_box_item">
		      <input type="checkbox" name="" id="VipEmail" class="user_select_ipt_checkbox"/>
		      <label for="VipEmail">屏蔽 开通会员邮箱</label>
		    </div>
		    <div class="user_settings_box_item">
		      <input type="checkbox" name="" id="OfficeModel" class="user_select_ipt_checkbox"/>
		      <label for="OfficeModel">屏蔽 办公文档模板</label>
		    </div>
		    <div class='user_settings_box_tip'>Tip:设置完记得刷新页面</div>
		    `;

		checkUserSetting();
	}

	/**
	 * 为所有的checkbox 绑定事件
	 */
	function checkUserSetting() {
		let checkboxArr = document.querySelectorAll(".user_select_ipt_checkbox");
		initCheckedStatus(checkboxArr);
		checkboxArr.forEach((item, i) => {
			item.onchange = function () {
				userSettingsArr[i] = checkboxArr[i].checked;
				localStorage.setItem(
					"adUserSettingsArr",
					JSON.stringify(userSettingsArr)
				);
			};
		});
	}

	/**
	 * 初始化默认全部屏蔽
	 */
	function initCheckedStatus(el) {
		el.forEach((item, i) => {
			el[i].checked = userSettingsArr[i];
		});
		localStorage.setItem("adUserSettingsArr", JSON.stringify(userSettingsArr));
	}

	let homeAdEl = function () {
		let homeAd = document.querySelector("#theme")
		let mainAppAd = document.querySelector(".mailApp")
		let loginBox = document.querySelector("#loginBlock")
		if (homeAd) {
			homeAd.parentNode.removeChild(homeAd)
		}
		if (mainAppAd) {
			mainAppAd.parentNode.removeChild(mainAppAd)
		}
		if (loginBox) {
			if (window.location.href.match(/yeah.net/)) {
				loginBox.style.left = "-50%"
				loginBox.style.transform = "translateX(-50%)"
				return
			} else {
				loginBox.style.left = "50%"
				loginBox.style.transform = "translateX(-50%)"
			}

		}

	}


	/**
	 * 隐藏页面中的广告
	 */
	let pageAdEl = function () {
		let bottomAd = document.querySelector(".gWel-bottom");
		let adElWrap = document.querySelector(".gWel-recommend");
		let vipEl = document.querySelector("#_mail_component_128_128");
		//底部广告
		if (adElWrap) {
			bottomAd.removeChild(adElWrap);
		}
		//顶部vip广告
		if (vipEl && userSettingsArr[3]) {
			vipEl.style.display = "none";
		}
		//左侧办公模板广告
		let tree = document.querySelector(".nui-tree");
		let treeEl = document.querySelectorAll(".nui-tree-item-text");
		for (let i = treeEl.length - 1; i > 0; i--) {
			if (treeEl[i].outerText === "办公模板" && userSettingsArr[4]) {
				tree.removeChild(tree.children[i]);
			}
		}
	};

	/**
	 * 顶部导航移除广告
	 */
	let navItemEl = function () {
		let navWrap = document.querySelector(".js-component-tab");
		if (navWrap) {
			let navItemArr = navWrap.querySelectorAll("li");
			if (navItemArr.length > 0) {
				for (let i = 0; i < navItemArr.length; i++) {
					//网易严选
					if (navItemArr[i].title === "网易严选" && userSettingsArr[0]) {
						navWrap.removeChild(navItemArr[i]);
					}
					//应用中心
					if (navItemArr[i].title === "应用中心" && userSettingsArr[1]) {
						navWrap.removeChild(navItemArr[i]);
					}
					//通讯录
					if (navItemArr[i].title === "通讯录" && userSettingsArr[2]) {
						navWrap.removeChild(navItemArr[i]);
					}
				}
			}
		}
	};
})();