121
|
1 // ==UserScript==
|
|
2 // @name twitter default following tab
|
|
3 // @namespace https://nanaya.net
|
|
4 // @match https://twitter.com/home
|
|
5 // @grant none
|
|
6 // @version 1.0.0
|
|
7 // @author nanaya
|
|
8 // @description Always select Following tab on first load
|
|
9 // @downloadURL https://hg.nanaya.net/ec-userscripts/raw-file/tip/twitter-default-following-tab.user.js
|
|
10 // ==/UserScript==
|
|
11
|
|
12 'use strict';
|
|
13
|
|
14 let selected = false;
|
|
15
|
|
16 const observer = new window.MutationObserver(selectFollowingTab);
|
|
17 let stopObservingTimeout;
|
|
18
|
|
19 function selectFollowingTab () {
|
|
20 if (selected) return;
|
|
21
|
|
22 const followingTab = document.querySelectorAll('[href="/home"][role=tab]')?.[1];
|
|
23 if (followingTab == null || followingTab.getAttribute('aria-selected') === 'true') return;
|
|
24
|
|
25 console.log("selecting 'Following' tab");
|
|
26 selected = true;
|
|
27 followingTab.click();
|
|
28 observer.disconnect();
|
|
29 clearTimeout(stopObservingTimeout);
|
|
30 }
|
|
31
|
|
32 function init () {
|
|
33 selectFollowingTab();
|
|
34 if (!selected) {
|
|
35 observer.observe(document, { childList: true, subtree: true });
|
|
36 }
|
|
37 stopObservingTimeout = setTimeout(() => {
|
|
38 console.log("couldn't find 'Following' tab, stop observing page");
|
|
39 observer.disconnect();
|
|
40 }, 60000);
|
|
41 }
|
|
42
|
|
43 if (document.readyState === 'loading') {
|
|
44 document.addEventListener('DOMContentLoaded', init);
|
|
45 } else {
|
|
46 init();
|
|
47 }
|