Greasy Fork

来自缓存

Greasy Fork is available in English.

我的世界去除跳转网易提示

去掉网易跳转提示提示

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name       我的世界去除跳转网易提示
// @namespace  https://github.com/marioplus/minecraft-net-easy-tips-remover
// @version    1.1.0
// @author     marioplus
// @license    GPL-3.0
// @icon       https://www.google.com/s2/favicons?sz=64&domain=minecraft.net
// @match      https://www.minecraft.net/*
// @run-at     document-start
// @description 去掉网易跳转提示提示
// ==/UserScript==

(function () {
  'use strict';

  var __defProp = Object.defineProperty;
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
  var __publicField = (obj, key, value) => {
    __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
    return value;
  };
  class ElementCreateListener {
    /**
     * 初始化元素监听器
     * @param mode 监听模式:
     *   - 'auto' : 添加首个处理器时自动激活监听
     *   - 'manual' : 需手动调用 activate() 启动
     */
    constructor(mode = "auto") {
      // 观测器实例,用于监听 DOM 树变化
      __publicField(this, "_observer");
      // 存储选择器与回调的映射关系(Key: CSS 选择器,Value: 处理函数)
      __publicField(this, "_handlerMap", /* @__PURE__ */ new Map());
      // 当前监听器状态,用于防止重复激活
      __publicField(this, "_operationStatus", "idle");
      // 运行模式标志(构造时确定,不可变)
      __publicField(this, "_listeningMode");
      this._listeningMode = mode;
      this._observer = new MutationObserver(
        (mutationRecords) => this._handleMutations(mutationRecords)
      );
    }
    /**
     * 处理 DOM 变动记录的核心逻辑
     * @param mutationRecords - MutationObserver 返回的变动记录数组
     */
    _handleMutations(mutationRecords) {
      for (const record of mutationRecords) {
        if (record.type !== "childList" || record.target.nodeType !== Node.ELEMENT_NODE || record.addedNodes.length === 0)
          continue;
        record.addedNodes.forEach((node) => {
          if (node.nodeType !== Node.ELEMENT_NODE || !(node instanceof HTMLElement))
            return;
          const newElement = node;
          this._handlerMap.forEach((handler, selector) => {
            if (newElement.matches(selector)) {
              this._invokeHandler(handler, newElement, selector);
            }
            newElement.querySelectorAll(selector).forEach((nestedElement) => {
              this._invokeHandler(handler, nestedElement, selector);
            });
          });
        });
      }
    }
    /**
     * 安全执行处理器函数
     * @param handler - 注册的回调函数
     * @param targetElement - 待处理的 HTML 元素(已做类型断言)
     * @param selector - 对应的选择器标识
     */
    _invokeHandler(handler, targetElement, selector) {
      try {
        handler(targetElement, selector);
      } catch (error) {
        console.error(`[ElementCreateListener]  Handler error for "${selector}":`, error);
      }
    }
    //======== 公开接口 ========//
    /**
     * 注册元素处理器
     * @param selector - CSS 选择器
     * @param callback - 匹配到元素时执行的回调
     * @returns 当前实例(支持链式调用)
     */
    addHandler(selector, callback) {
      this._handlerMap.set(selector, callback);
      if (this._listeningMode === "auto")
        this.activate();
      return this;
    }
    /**
     * 移除指定选择器的处理器
     * @param selectors - 要移除的 CSS 选择器列表
     * @returns 当前实例(支持链式调用)
     */
    removeHandler(...selectors) {
      selectors.forEach((selector) => this._handlerMap.delete(selector));
      if (this._handlerMap.size === 0)
        this.deactivate();
      return this;
    }
    /**
     * 清空所有处理器并停止监听
     * @returns 当前实例(支持链式调用)
     */
    clearHandlers() {
      this._handlerMap.clear();
      this.deactivate();
      return this;
    }
    /**
     * 启动 DOM 监听(幂等操作)
     * @remarks 重复调用不会产生副作用
     * @returns 当前实例(支持链式调用)
     */
    activate() {
      if (this._operationStatus === "idle") {
        this._operationStatus = "active";
        this._observer.observe(document.documentElement, {
          childList: true,
          // 监控子节点变化
          subtree: true
          // 监控所有后代节点
        });
      }
      return this;
    }
    /**
     * 停止 DOM 监听(幂等操作)
     * @returns 当前实例(支持链式调用)
     */
    deactivate() {
      this._operationStatus = "idle";
      this._observer.disconnect();
      return this;
    }
    /**
     * 延时自动停止监听
     * @param timeout - 延迟时间(毫秒)
     * @returns 当前实例(支持链式调用)
     */
    delayedDeactivate(timeout) {
      setTimeout(() => this.deactivate(), timeout);
      return this;
    }
  }
  new ElementCreateListener("auto").addHandler(".MC_AEM_Wrapper", (el) => el.style.display = "none").delayedDeactivate(10 * 1e3);

})();