나무위키 광고 삭제

일단 모바일에서도 되는 것 같아요;

// ==UserScript==
// @name        나무위키 광고 삭제
// @namespace   Violentmonkey Scripts
// @icon        https://t2.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=http://namu.wiki
// @match       https://namu.wiki/*
// @grant       none
// @version     1.25
// @author      Xlbatross
// @run-at      document-end
// @description 일단 모바일에서도 되는 것 같아요;
// ==/UserScript==

// 변경을 감지할 노드 선택
const targetNode = document.body;

// 감지 옵션 (감지할 변경)
const config = { childList: true, subtree: true };

// 변경 감지 시 실행할 콜백 함수
const callback = (mutationList, observer) => {
  for (const mutation of mutationList) {
    if (mutation.type === "childList") {
      const addedNodes = mutation.addedNodes;
      if (addedNodes.length > 0) {
        let parent;

        const queryId = mutation.target.querySelector('[data-google-query-id]');
        parent = queryId;
        while (parent && parent.parentElement.children.length == 1) {
          let oldParent = parent;
          parent = parent.parentElement;
          if (!parent) {
            parent = oldParent;
            break;
          }
        }
        parent?.remove();

        // Power Link
        const powerLinkImg = mutation.target.querySelector('img[src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PC9zdmc+"]');
        parent = powerLinkImg;

        if (parent) {
          // powerLink table 검색
          while (parent && parent.tagName != 'TABLE') {
            parent = parent.parentElement;
          }

          // table 위의 parent와 그 위 parent를 확인.
          let table = parent;
          let topParent = table.parentElement.parentElement;
          parent = table.parentElement;

          // table 삭제
          table?.remove();

          // 삭제 후 parent에 a element 확인
          let linkElement = parent.querySelector('a[href]');
          if (!linkElement) {
            parent?.remove();
            linkElement = topParent.querySelector('a[href]');
            if (!linkElement){
              topParent?.remove();
            }
          }
        }
      }
    }
  }
};

// 콜백 함수에 연결된 감지기 인스턴스 생성
const observer = new MutationObserver(callback);

// 설정한 변경의 감지 시작
observer.observe(targetNode, config);

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址