나무위키 광고 삭제

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

目前为 2025-03-30 提交的版本。查看 最新版本

// ==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.24
// @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") {
      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或关注我们的公众号极客氢云获取最新地址