Greasy Fork 支持简体中文。

Dcard 訪客友善模式

參考現有的腳本並改善相關問題,營造出免登入友善瀏覽環境

// ==UserScript==
// @name         Dcard 訪客友善模式
// @namespace    http://tampermonkey.net/
// @version      1.2.4
// @description  參考現有的腳本並改善相關問題,營造出免登入友善瀏覽環境
// @author       Creeper@2022
// @match        http*://*.dcard.tw/*
// @icon         https://www.google.com/s2/favicons?domain=dcard.tw
// @grant        GM_addStyle
// @license      WTFPL
// ==/UserScript==

const OBS_SETTING = {
    childList: 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_popup = new MutationObserver(cleanLoginPopup);
                clean_popup.observe(portal_element, OBS_SETTING);
                obs.disconnect();
            }
        });
        observer.observe(document.body, OBS_SETTING);
    }

    /* 自訂義 CSS 語法 */
    customCSS();
})();

function cleanLoginPopup(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";
    }
}

function customCSS() {
    GM_addStyle('[data-key^="ad-"] {display:none !important}');
    GM_addStyle('.__portal>div:not([data-testid="overlay"], .overlay-enter-done) {display:none !important}');
}