最新ツイート表示が好き!
by
furyu-tei
2020-04-14 [2020/04/14 22:45:26]
今後は https://greasyfork.org/ja/scripts/400695-i-like-latest-tweets 参照(Twitter のタイムラインが「ホーム」になったときに、最新ツイート表示に切り替える)
/*
* @title 最新ツイート表示が好き!
* @description Twitter のタイムラインが「ホーム」になったときに、最新ツイート表示に切り替える
* @include https://twitter.com/*
* @include https://mobile.twitter.com/*
* @license MIT License
* @require
* @javascript_url
*/
( () => {
let
status = 'idle';
const
FixToLatestTweetTimeline = new class {
constructor() {
this.status = 'idle';
this.update_status();
}
update_status() {
switch ( this.status ) {
case 'idle' : {
let home_mode_button = this.get_home_mode_button();
if ( ! home_mode_button ) {
break;
}
console.log( '「ホーム」を検知!最新ツイート表示へ切り変えます!' );
home_mode_button.click();
this.status = 'wait_menu';
break;
}
case 'wait_menu': {
let change_to_recent_mode_button = this.get_change_to_recent_mode_button();
if ( ! change_to_recent_mode_button ) {
break;
}
change_to_recent_mode_button.click();
console.log( '最新ツイート表示へ切り替え中…' );
this.status = 'wait_home_mode_button_off';
break;
}
case 'wait_home_mode_button_off' : {
let home_mode_button = this.get_home_mode_button();
if ( home_mode_button ) {
break;
}
console.log( '最新ツイート表示に切り替わりました!' );
this.status = 'idle';
break;
}
}
}
get_home_mode_button() {
return document.querySelector( 'div[role="button"][aria-label="トップツイートがオンになります"]' );
}
get_change_to_recent_mode_button() {
return Array.from( document.querySelectorAll( 'div[role="menu"] div[role="menuitem"] > div > div > span' ) ).filter( span => 0 <= span.textContent.indexOf( '最新ツイート表示に切り替える' ) )[ 0 ];
}
},
observer = new MutationObserver( ( records ) => {
if ( new URL( location.href ).pathname != '/home' ) {
return;
}
FixToLatestTweetTimeline.update_status();
} );
observer.observe( document.body, { childList: true, subtree: true } );
} )();
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。