【分享】浏览器脚本:让 Linux.do 帖子链接在新标签页打开

最近发现在浏览社区时,点击帖子链接都是在当前页面打开的,对于想同时浏览多个帖子的朋友来说不太方便。于是写了一个简单的 浏览器 脚本来解决这个问题。

功能介绍

  • 让所有帖子链接(/t/topic/)在新标签页中打开
  • 支持动态加载的内容
  • 不影响网站其他功能

使用方法

  1. 安装 Stay 浏览器插件(Safari)(原则上油猴 Tampermonkey 安装脚本也是可以的)
  2. 打开 Stay 脚本管理器
  3. 创建新脚本
  4. 复制以下代码并粘贴
  5. 保存并启用

// ==UserScript==
// @name Linux.do 新标签页打开帖子
// @namespace https://linux.do/
// @version 1.1
// @descriptionlinux.do 网站的帖子链接在新标签页中打开
// @author Your Name
// @match https://linux.do/*
// @grant none
// ==/UserScript==

(function() {
‘use strict’;

// 使用事件委托处理所有点击事件
document.addEventListener('click', function(e) {
    // 查找被点击的链接元素
    let target = e.target;
    while (target && target.tagName !== 'A') {
        target = target.parentElement;
    }
    
    // 如果找到了链接元素
    if (target && target.tagName === 'A') {
        // 检查是否是帖子链接
        const href = target.getAttribute('href');
        if (href && href.startsWith('/t/topic/')) {
            // 阻止默认行为
            e.preventDefault();
            e.stopPropagation();
            
            // 获取完整URL
            const fullUrl = new URL(href, window.location.origin).href;
            
            // 在新标签页中打开
            window.open(fullUrl, '_blank');
        }
    }
}, true);

})();

工作原理

  • 使用事件委托监听所有点击事件
  • 判断点击的是否为帖子链接
  • 如果是帖子链接,则阻止默认行为并在新标签页打开

:clap:最新版本更新至GitHub
一个智能的浏览器用户脚本(UserScript),可以自动判断并在新标签页中打开网页链接。无需配置,即装即用,支持所有主流浏览器。

22 个赞

感谢分享,此外,可以按住 ctrl/command 左键点击链接,或者鼠标中键点击链接,就可以新 tab 打开了。

12 个赞

一直用的鼠标中键

9 个赞

哎呀我去,才学会

6 个赞

我以前写过一个在任意网站根据 URL 规则,让链接在新标签页打开的油猴脚本。

设置话题 URL 规则:

但是发现点击右侧的 timeline 时,也会新标签页打开,很烦。所以关闭脚本不用了。佬的脚本估计也有这个问题。

7 个赞

佬,确实有这个问题,我的改进方法是,通过容器、ID判断是不是常见的导航栏、侧边栏,以及判断是不是主要区域

4 个赞

限定哪些区域的链接在新标签页打开会好点。 :clap:

4 个赞
const config = {
        // 需要排除的容器类名或ID(导航栏、侧边栏、工具栏等)
        excludeContainers: [
            'nav', 'navigation', 'navbar', 'header', 'footer',
            'sidebar', 'menu', 'toolbar', 'timeline', 'pagination',
            'breadcrumb', 'dropdown', 'modal', 'dialog'
        ],
        
        // 需要排除的链接类型
        excludeLinkTypes: [
            'menu-item', 'nav-item', 'button', 'tab', 'logo',
            'icon', 'avatar', 'profile', 'search', 'login',
            'signup', 'download'
        ],
        
        // 主要内容区域的类名特征
        mainContentClasses: [
            'content', 'main', 'article', 'post', 'topic',
            'thread', 'list', 'body'
        ]
    };
2 个赞

学到了。。赞

1 个赞

一直习惯性按的ctrl,一下还没反应过来

好强大佬 :bili_019: :bili_019:不过不能用鼠标滚轮嘛,我习惯了 :bili_057:毕竟很多网站都不能另开标签页面 :tieba_087:

哈哈哈哈哈,找到和大帅哥的另一个共同点 :bili_057: :bili_057:

windows下按Ctrl Mac下按Command

1 个赞

我是用触控板,没用鼠标,也没太考虑用快捷键,浏览器脚本挂了很多,就想着自己写一个便捷

1 个赞

学到了 :clap:

1 个赞

感谢分享,一直觉得原页跳转真的很难习惯

1 个赞

!!大佬真的强啊,缺什么自己就整出来了 :bili_062: :bili_062:

1 个赞

还有一个方式是使用 Vinium 扩展。
f - 当前页打开
F - 新标签页打开,停留在当前页
a - 新标签页打开,切换到打开的新标签页

1 个赞

鼠标中间不就可以嘛,大家不习惯这么用吗

我是触控板,没用鼠标