🏠 Home 

Greasy Fork is available in English.

屏蔽minecraft.net官网的网易弹窗

屏蔽minecraft.net官网的网易弹窗,支持旧版和新版的弹窗


安装此脚本?
// ==UserScript==
// @name         屏蔽minecraft.net官网的网易弹窗
// @namespace    http://tampermonkey.net/
// @version      0.3.1
// @description  屏蔽minecraft.net官网的网易弹窗,支持旧版和新版的弹窗
// @author       kzyqq00-Player
// @match        https://www.minecraft.net/*
// @license      MIT
// @icon         https://www.minecraft.net/etc.clientlibs/minecraftnet/clientlibs/clientlib-site/resources/favicon-96x96.png
// @grant        none
// @run-at       document-body
// ==/UserScript==
(function () {
'use strict';
const BUTTON_ELEMENT_SELECTOR_TEXT = 'div.MC_modal_actions_container.MC_modalA_contentPanel_actions.MC_modal_actions_singlerow > button:nth-child(2)';
const LEGACY_DIALOG_ELEMENT_SELECTOR_TEXT = '.netease-promotion-popup';
const buttonElement = document.querySelector(BUTTON_ELEMENT_SELECTOR_TEXT); // 先尝试使用新版按钮
if (!buttonElement) {
const legacyDialog = document.querySelector(LEGACY_DIALOG_ELEMENT_SELECTOR_TEXT);
if (!legacyDialog) { // 如果找不到旧版弹窗,就监测页面变动,一旦监测到了新版按钮出现就点击/旧版弹窗出现就移除
new Promise((resolve, reject) => {
const observer = new MutationObserver(() => {
const _button = document.querySelector(BUTTON_ELEMENT_SELECTOR_TEXT);
const _legacyDialog = document.querySelector(LEGACY_DIALOG_ELEMENT_SELECTOR_TEXT);
if (_button || _legacyDialog) { // 如果新版或旧版按钮任意一个存在,则resolve
clearTimeout(id);
resolve([_button || _legacyDialog, Boolean(_button)]);
observer.disconnect();
}
});
const config = {
childList: true,
subtree: true
};
try {
observer.observe(document.querySelector('div.xfpage.page.basicpage'), config); // 尝试监听范围更小的元素;如果没有,则监听body
} catch (_) {
observer.observe(document.body, config);
}
const id = setTimeout(() => {
observer.disconnect();
reject(); // 超时就reject
}, 1000); // 超时1秒
})
.then((res) => {
if (res[1]) { // 新版按钮
res[0].click(); // 把resolve过来的按钮元素点击
} else { // 旧版弹窗
document.body.classList.remove('modal-open');
res[0].remove();
}
})
.catch(() => {
alert('尝试获取按钮/弹窗失败,可能是因为油猴脚本版本过旧,请尝试更新到最新版本;如果已经是最新版本,请反馈给作者,不需要有其他的描述,给这个弹窗的截图就好');
throw new TypeError('Get button element failed');
});
} else { // 如果直接找到了旧版弹窗就直接移除
legacyDialog.remove();
}
} else {
buttonElement.click();
}
})();