油猴脚本:自动将 linux.do 的话题链接重定向为 nested 视图

2026-04-11 08:341阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐
问题描述:

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

脚本功能说明

  1. 自动识别 ID:脚本会自动提取 URL 中的话题 ID,并忽略掉末尾的具体楼层编号,统一导向该话题的 nested 视图页面。
  2. 重定向处理
  • 初始进入:直接在地址栏输入或打开原链接,脚本会在页面加载前立即重定向(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); })();

脚本功能说明

  1. 自动识别 ID:脚本会自动提取 URL 中的话题 ID,并忽略掉末尾的具体楼层编号,统一导向该话题的 nested 视图页面。
  2. 重定向处理
  • 初始进入:直接在地址栏输入或打开原链接,脚本会在页面加载前立即重定向(replace 模式不会产生多余的历史记录)。
  • 动态点击:脚本会监听全页面的点击事件。无论链接是在主题列表页,还是藏在某个回帖的引用里,点击后都会被拦截并重定向。

enjoy : - )

网友解答:
--【壹】--:

我自己也写了一个类似的脚本,其实还有一个参数,也可以加上,就是控制排序的sort:
‘none’, ‘new’, ‘old’, ‘top’
再增加一个简单的配置面板,用来配置是否启用以及默认排序,体验会更好


--【贰】--:

这个时间轴的看上去太宽了,是不是应该限制下宽度比较好看


--【叁】--:

哈哈哈可以的,确实没有一个持久化的更换配置,不过我觉得后面应该会更新的


--【肆】--: 王大锤:

L 站新加入的 view as nested 功能非常好,用来看回帖关系非常友好。

这是在哪开的,我怎么找不到?


--【伍】--:

打开任意一个帖子,ctrl + f,搜索 view


--【陆】--:

这个UI页面也太宽了吧,感觉阅读起来好累


--【柒】--:

草,星际了

就是去掉时间轴,页面变宽点吗?

标签:软件开发