參考現有的腳本並改善相關問題,營造出免登入友善瀏覽環境
// ==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}');
}