// ==UserScript== // @name Dcard 訪客友善模式 // @namespace http://tampermonkey.net/ // @version 1.1 // @description 參考現有的腳本並改善相關問題,營造出免登入友善瀏覽環境 // @author Creeper@2022 // @match http*://*.dcard.tw/* // @icon https://www.google.com/s2/favicons?domain=dcard.tw // @license WTFPL // @downloadURL none // ==/UserScript== (() => { const OBS_SETTING = { childList: true, subtree: true }; let login_type = document.querySelectorAll("[role='navigation']>a").length; /* 防呆,如果登入將停止運作避免影響其他功能 */ if(login_type < 4) { /* 等待 __portal 元素生成 */ let observer = new MutationObserver((mutations, obs) => { let portal_element = document.querySelector(".__portal"); if(portal_element){ let clean_LPopup = new MutationObserver(cleanLoginBanner); let clean_LBanner = new MutationObserver(checkAndDeletePopup); clean_LPopup.observe(portal_element, OBS_SETTING); clean_LBanner.observe(portal_element, OBS_SETTING); obs.disconnect(); } }); observer.observe(document, OBS_SETTING); } })(); function cleanLoginBanner(mutations, obs) { /* 刪除下方 banner */ let login_banner = document.querySelector(".__portal>div:not([data-testid='overlay'])"); if(login_banner) { login_banner.style.display = "none"; obs.disconnect(); } } function checkAndDeletePopup(mutations, obs) { /* 刪除滑動時出現的登入視窗 */ let login_request_popup = document.querySelector("[role='dialog']"); if(login_request_popup) { let login_popup_overlay = login_request_popup.closest("[data-testid='overlay']:last-child"); login_popup_overlay.style.display = "none"; login_request_popup.remove(); document.body.style.overflow = "auto"; } }