@pengzhile 原作者在这,有时候想看最新发布的帖子有哪些,没法按创建时间排序。找到这个油猴插件,使用了一下功能达到了,有一些细节没有处理好,作为一个强迫症患者,实在受不了,所以优化了一下。发这种插件应该不违规吧?
@NullUser 佬的思路。
此处是油猴插件代码
// ==UserScript==
// @name Linux.do按帖子创建时间排序
// @namespace http://tampermonkey.net/
// @version 1.2
// @description 在 Linux.do 网页上修改链接和增加新链接
// @author 马克思
// @match https://linux.do/*
// @grant none
// @icon data:image/png;base64,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
// ==/UserScript==
(function() {
'use strict';
function updateActiveStates() {
var currentPath = window.location.pathname + window.location.search;
var navigationBar = document.querySelector('ul#navigation-bar');
if (!navigationBar) return;
var latestReplyItem = null;
var latestCreatedItem = navigationBar.querySelector('li.nav-item_latest_created');
// 找到"最新回复"项
var navigationItems = navigationBar.querySelectorAll('li');
navigationItems.forEach(function(item) {
var anchor = item.querySelector('a');
if (anchor && anchor.textContent.trim() === "最新回复") {
latestReplyItem = item;
}
});
// 检查是否有其他导航项已经是active状态(排除我们自己添加的两个项)
var hasOtherActiveItem = false;
navigationItems.forEach(function(item) {
if (item !== latestReplyItem && item !== latestCreatedItem) {
if (item.classList.contains('active')) {
hasOtherActiveItem = true;
}
}
});
// 如果有其他项是active状态,不要改变现有状态
if (hasOtherActiveItem) {
// 移除我们两个项的active状态
if (latestReplyItem) {
latestReplyItem.classList.remove('active');
var anchor = latestReplyItem.querySelector('a');
if (anchor) anchor.classList.remove('active');
}
if (latestCreatedItem) {
latestCreatedItem.classList.remove('active');
var anchor = latestCreatedItem.querySelector('a');
if (anchor) anchor.classList.remove('active');
}
return;
}
// 没有其他active项时,根据路径设置我们的项
// 先移除两个项的active状态
if (latestReplyItem) {
latestReplyItem.classList.remove('active');
var anchor = latestReplyItem.querySelector('a');
if (anchor) anchor.classList.remove('active');
}
if (latestCreatedItem) {
latestCreatedItem.classList.remove('active');
var anchor = latestCreatedItem.querySelector('a');
if (anchor) anchor.classList.remove('active');
}
// 根据路径设置相应的active状态
if (currentPath.includes('/latest?order=created')) {
// 选中"最新创建"
if (latestCreatedItem) {
latestCreatedItem.classList.add('active');
var anchor = latestCreatedItem.querySelector('a');
if (anchor) {
anchor.classList.add('active');
}
}
} else {
// 默认选中"最新回复"
if (latestReplyItem) {
latestReplyItem.classList.add('active');
var anchor = latestReplyItem.querySelector('a');
if (anchor) {
anchor.classList.add('active');
}
}
}
}
function modifyNavigationBar() {
var navigationBar = document.querySelector('ul#navigation-bar');
if (!navigationBar) return;
var navigationItems = navigationBar.querySelectorAll('li');
navigationItems.forEach(function(item) {
var anchor = item.querySelector('a');
if (anchor && anchor.textContent.trim() === "最新") {
// 修改原有的"最新"为"最新回复"
anchor.textContent = "最新回复";
// 检查是否已经存在"最新创建"项,避免重复添加
if (!navigationBar.querySelector('li.nav-item_latest_created')) {
var newestCreatedElement = document.createElement('li');
newestCreatedElement.title = "新发的帖子";
newestCreatedElement.id = "ember999";
newestCreatedElement.className = "latest_created ember-view nav-item_latest_created";
newestCreatedElement.innerHTML = '<a href="' + anchor.getAttribute('href') + '?order=created" pcked="1">最新创建</a>';
item.insertAdjacentElement('afterend', newestCreatedElement);
}
}
});
// 短暂延迟后更新active状态,确保页面其他导航状态已经设置完毕
setTimeout(updateActiveStates, 50);
}
function observeDocumentChanges() {
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
if (mutation.type === 'childList' && mutation.target.id === 'navigation-bar') {
modifyNavigationBar();
}
});
});
observer.observe(document.documentElement, { childList: true, subtree: true });
}
function observeURLChanges() {
var currentURL = window.location.href;
var urlObserver = new MutationObserver(function() {
if (window.location.href !== currentURL) {
currentURL = window.location.href;
setTimeout(updateActiveStates, 150);
}
});
urlObserver.observe(document.documentElement, { childList: true, subtree: true });
// 监听popstate事件(浏览器前进后退)
window.addEventListener('popstate', function() {
setTimeout(updateActiveStates, 150);
});
// 监听pushstate和replacestate(SPA路由变化)
var originalPushState = history.pushState;
var originalReplaceState = history.replaceState;
history.pushState = function() {
originalPushState.apply(history, arguments);
setTimeout(updateActiveStates, 150);
};
history.replaceState = function() {
originalReplaceState.apply(history, arguments);
setTimeout(updateActiveStates, 150);
};
}
function waitForLoad(callback) {
if (document.readyState === 'complete') {
callback();
return;
}
var observer = new MutationObserver(function(mutations) {
if (document.readyState === 'complete') {
observer.disconnect();
callback();
}
});
observer.observe(document.documentElement, { childList: true, subtree: true });
}
waitForLoad(function() {
modifyNavigationBar();
observeDocumentChanges();
observeURLChanges();
});
})();

