Greasy Fork is available in English.

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

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

// ==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');
    }
})();