让微博按正确的时间线排序

自动切换到最新微博,恢复正确的时间线

このスクリプトの質問や評価の投稿はこちら通報はこちらへお寄せください。
// ==UserScript==
// @name         让微博按正确的时间线排序
// @namespace    https://hehome.xyz/
// @version      0.2.6
// @icon         https://weibo.com/favicon.ico
// @description  自动切换到最新微博,恢复正确的时间线
// @author       hemengyang
// @match        https://weibo.com/*
// @match        https://www.weibo.com/*
// @grant        none
// ==/UserScript==

(function () {
    'use strict';
    // 判断是否是新版微博
    var isNewVersion = document.querySelector('a.gn_name') === null;

    if (isNewVersion) {
        // 新版微博
        // 切换到最新微博
        function switchToLatest() {
            // 侧边栏的最新微博按钮
            var latestButton = document.querySelector('div[title="最新微博"]');
            if (latestButton === null) {
                // 无法找到最新微博的按钮,且不在主页时,
                // 会尝试重新加载网页
                if (window.location.pathname !== '/') {
                    window.location = '/';
                }
            } else {
                latestButton.click();
            }
        }
        // 首页按钮
        var homeButton = document.querySelector('div[aria-label="首页"]');
        if (homeButton !== null) {
            // 通过 div[aria-label="首页"] 获取元素的父元素也能单击回到全部关注
            // 需要替换那个元素,否则单击主页按钮边缘会回到全部关注而不是最新微博
            homeButton = homeButton.parentElement
            // 替换首页按钮点击事件
            homeButton.addEventListener('click', (e) => { switchToLatest(); e.stopPropagation(); e.preventDefault(); }, true);
        }
        // 左上角的图标
        var homeIcon = document.querySelector('a[aria-label="Weibo"]');
        if (homeIcon !== null) {
            // 替换左上角的微博图标点击事件
            homeIcon.addEventListener('click', (e) => { switchToLatest(); e.stopPropagation(); e.preventDefault(); }, true);
        }
        // 每隔 500 毫秒检查一下
        // 如果在微博主页自动切换到最新微博
        var switchInterval = setInterval(function () {
            if (window.location.pathname === '/') {
                switchToLatest();
            } else {
                clearInterval(switchInterval);
            }
        }, 500);
    }
    else {
        // 老版微博
        var userId = document.querySelector('a.gn_name').href.split('/')[3];
        var isHome = window.location.pathname.split('/')[3] === 'home';
        var isNew = window.location.search.indexOf('is_new') !== -1;
        // 自动切换到最新微博
        if (isHome && !isNew) {
            window.location = '/home?is_new=1';
        }
        // 替换左上角的微博图标点击后网址为最新微博
        document.querySelector('a.box').setAttribute('href', '/u/' + userId + '/home?is_new=1');
    }
})();