Mercurial > ec-userscripts
view twitter-default-following-tab.user.js @ 130:49658e99888a
[medium] update class name and use document level styling instead
author | nanaya <me@nanaya.net> |
---|---|
date | Sun, 26 Feb 2023 20:09:37 +0900 |
parents | f2a53a2b9a5b |
children | 7a7aafa65bae |
line wrap: on
line source
// ==UserScript== // @name twitter default following tab // @namespace https://nanaya.net // @match https://mobile.twitter.com/* // @match https://twitter.com/* // @grant none // @run-at document-start // @version 1.1.1 // @author nanaya // @description Always select Following tab on first load // @downloadURL https://hg.nanaya.net/ec-userscripts/raw-file/tip/twitter-default-following-tab.user.js // @updateURL https://hg.nanaya.net/ec-userscripts/raw-file/tip/twitter-default-following-tab.user.js // ==/UserScript== 'use strict'; let selected = false; let observing = true; function isHome () { return window.location.pathname === '/home'; } let resumeObserverTimeout; // prevent reselect on browser back/forward navigation function pauseObserver () { console.debug('pausing observer'); observing = false; clearTimeout(resumeObserverTimeout); resumeObserverTimeout = setTimeout(() => { console.debug('resuming observer'); observing = true; selected = isHome(); }, 1000); } function selectFollowingTab () { if (!observing) return; if (!isHome()) { selected = false; return; } if (selected) return; const followingTab = document.querySelectorAll('a[href="/home"][role=tab]')?.[1]; if (followingTab == null) return; if (followingTab.getAttribute('aria-selected') === 'true') { selected = true; return; } console.log('selecting "Following" tab'); selected = true; followingTab.click(); } new window.MutationObserver(selectFollowingTab).observe(document, { childList: true, subtree: true }); selectFollowingTab(); window.addEventListener('popstate', pauseObserver);