油猴脚本:自动将 linux.do 的话题链接重定向为 nested 视图
- 内容介绍
- 文章标签
- 相关推荐
L站新加入的 view as nested 功能非常好,用来看回帖关系非常友好。
可惜目前没有地方设置为默认视图,每次都点一下很麻烦,所以让哈基咪帮忙写了个简单的油猴脚本,用起来还可以,分享给大家:
// ==UserScript==
// @name Linux.do 话题重定向 (Nested View)
// @namespace http://tampermonkey.net/
// @version 1.0
// @description 自动将 linux.do 的话题链接重定向为 nested 视图并按旧到新排序
// @author 哈基咪
// @match https://linux.do/*
// @grant none
// @run-at document-start
// ==/UserScript==
(function() {
'use strict';
// 匹配逻辑:匹配 /t/topic/数字 或 /t/topic/数字/数字
const TOPIC_REGEX = /https:\/\/linux\.do\/t\/topic\/(\d+)(?:\/\d+)?/;
/**
* 生成重定向后的目标 URL
*/
function getTargetUrl(url) {
const match = url.match(TOPIC_REGEX);
if (match && !url.includes('/nested/')) {
const topicId = match[1];
return `https://linux.do/nested/topic/${topicId}?sort=old`;
}
return null;
}
/**
* 处理直接访问(进入页面时重定向)
*/
const currentTarget = getTargetUrl(window.location.href);
if (currentTarget) {
window.location.replace(currentTarget);
}
/**
* 处理点击跳转(针对列表页或评论内的超链接)
* 采用捕获阶段监听,确保在单页应用 (SPA) 路由触发前进行拦截
*/
document.addEventListener('click', function(e) {
// 查找最近的锚点标签 <a>
const anchor = e.target.closest('a');
if (anchor && anchor.href) {
const target = getTargetUrl(anchor.href);
if (target) {
e.preventDefault(); // 阻止原有的跳转
window.location.href = target; // 强制跳转到新地址
}
}
}, true);
})();
脚本功能说明
- 自动识别 ID:脚本会自动提取 URL 中的话题 ID,并忽略掉末尾的具体楼层编号,统一导向该话题的
nested视图页面。 - 重定向处理:
- 初始进入:直接在地址栏输入或打开原链接,脚本会在页面加载前立即重定向(
replace模式不会产生多余的历史记录)。 - 动态点击:脚本会监听全页面的点击事件。无论链接是在主题列表页,还是藏在某个回帖的引用里,点击后都会被拦截并重定向。
enjoy : - )
网友解答:--【壹】--:
我自己也写了一个类似的脚本,其实还有一个参数,也可以加上,就是控制排序的sort:
‘none’, ‘new’, ‘old’, ‘top’
再增加一个简单的配置面板,用来配置是否启用以及默认排序,体验会更好
--【贰】--:
这个时间轴的看上去太宽了,是不是应该限制下宽度比较好看
--【叁】--:
哈哈哈可以的,确实没有一个持久化的更换配置,不过我觉得后面应该会更新的
--【肆】--: 王大锤:
L 站新加入的
view as nested功能非常好,用来看回帖关系非常友好。
这是在哪开的,我怎么找不到?
--【伍】--:
打开任意一个帖子,ctrl + f,搜索 view
--【陆】--:
这个UI页面也太宽了吧,感觉阅读起来好累
--【柒】--:
草,星际了
就是去掉时间轴,页面变宽点吗?
L站新加入的 view as nested 功能非常好,用来看回帖关系非常友好。
可惜目前没有地方设置为默认视图,每次都点一下很麻烦,所以让哈基咪帮忙写了个简单的油猴脚本,用起来还可以,分享给大家:
// ==UserScript==
// @name Linux.do 话题重定向 (Nested View)
// @namespace http://tampermonkey.net/
// @version 1.0
// @description 自动将 linux.do 的话题链接重定向为 nested 视图并按旧到新排序
// @author 哈基咪
// @match https://linux.do/*
// @grant none
// @run-at document-start
// ==/UserScript==
(function() {
'use strict';
// 匹配逻辑:匹配 /t/topic/数字 或 /t/topic/数字/数字
const TOPIC_REGEX = /https:\/\/linux\.do\/t\/topic\/(\d+)(?:\/\d+)?/;
/**
* 生成重定向后的目标 URL
*/
function getTargetUrl(url) {
const match = url.match(TOPIC_REGEX);
if (match && !url.includes('/nested/')) {
const topicId = match[1];
return `https://linux.do/nested/topic/${topicId}?sort=old`;
}
return null;
}
/**
* 处理直接访问(进入页面时重定向)
*/
const currentTarget = getTargetUrl(window.location.href);
if (currentTarget) {
window.location.replace(currentTarget);
}
/**
* 处理点击跳转(针对列表页或评论内的超链接)
* 采用捕获阶段监听,确保在单页应用 (SPA) 路由触发前进行拦截
*/
document.addEventListener('click', function(e) {
// 查找最近的锚点标签 <a>
const anchor = e.target.closest('a');
if (anchor && anchor.href) {
const target = getTargetUrl(anchor.href);
if (target) {
e.preventDefault(); // 阻止原有的跳转
window.location.href = target; // 强制跳转到新地址
}
}
}, true);
})();
脚本功能说明
- 自动识别 ID:脚本会自动提取 URL 中的话题 ID,并忽略掉末尾的具体楼层编号,统一导向该话题的
nested视图页面。 - 重定向处理:
- 初始进入:直接在地址栏输入或打开原链接,脚本会在页面加载前立即重定向(
replace模式不会产生多余的历史记录)。 - 动态点击:脚本会监听全页面的点击事件。无论链接是在主题列表页,还是藏在某个回帖的引用里,点击后都会被拦截并重定向。
enjoy : - )
网友解答:--【壹】--:
我自己也写了一个类似的脚本,其实还有一个参数,也可以加上,就是控制排序的sort:
‘none’, ‘new’, ‘old’, ‘top’
再增加一个简单的配置面板,用来配置是否启用以及默认排序,体验会更好
--【贰】--:
这个时间轴的看上去太宽了,是不是应该限制下宽度比较好看
--【叁】--:
哈哈哈可以的,确实没有一个持久化的更换配置,不过我觉得后面应该会更新的
--【肆】--: 王大锤:
L 站新加入的
view as nested功能非常好,用来看回帖关系非常友好。
这是在哪开的,我怎么找不到?
--【伍】--:
打开任意一个帖子,ctrl + f,搜索 view
--【陆】--:
这个UI页面也太宽了吧,感觉阅读起来好累
--【柒】--:
草,星际了
就是去掉时间轴,页面变宽点吗?

