Github 部分链接新标签页打开

Github 项目链接和文档中的链接新标签页打开

// ==UserScript==
// @name         Github 部分链接新标签页打开
// @namespace    http://tampermonkey.net/
// @version      1.2
// @description  Github 项目链接和文档中的链接新标签页打开
// @author       Brayden
// @license      AGPL-3.0-or-later
// @icon         data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAAAXNSR0IArs4c6QAAAUtJREFUSEvdll9ugkAQxudbPEBLewB9kKSnkJ5EfKQeQj2E8IicRD2FCTyUA7SkByg7zYbQQFzQjRHS7iMM+5tv/gLq4aAHBg0LeQ5Tt2BagXhspJYR58vpuv5NqxI7SNno8satvMt9Z1E90kKetonHQNQO4ax8hxaVnOVvzuQmiMT3RJC1Ioand2RoiB0mkSDELHncFa6blNhB8g6mjQpBzxDOCHSox15SsbGk5bKgWSMnTG5ZDB050SkB86IQRQPy5b9kD+HprLLAowikQIYQXfX81Zyca/k/SlQxSGBeJll3rkg8BDLJtL/LgKxK+HPp7FT3t8+mbrwAvX7409+yb0zhxyDdg+lY7QO1U9SIMVGkekr1Ues+sbfpmsBzYsSgapx3I1Ro617rrBtKVBcLOfIYNLt6I4IO9QV1EWISFhPbYX8kTDy9ZPsD3MfqGtJfu9YAAAAASUVORK5CYII=
// @match        https://github.com/*
// @grant        none
// ==/UserScript==

(function () {
    'use strict';

    // 选择器以匹配您想要修改的a标签
    const selector = 'div.d-inline-block.mb-1 a, div.d-flex.width-full.flex-items-center a, div.Box-sc-g0xbh4-0.bBwPjs.search-title a, .markdown-body a';

    // 打开新标签页的函数
    function setOpenInNewTab() {
        let externalLinks = document.querySelectorAll(selector);
        externalLinks = Array.from(externalLinks).filter(link => !link.getAttribute('href').startsWith('#'));
        externalLinks.forEach(function (link) {
            if (link.target !== '_blank') {
                link.target = '_blank';
                console.log(link.href);
            }
        });
    }

    // 监听DOM变化的函数
    function observePageChanges() {
        var observer = new MutationObserver(mutations => {
            setOpenInNewTab();
        });
        var config = { childList: true, subtree: true };
        observer.observe(document.body, config);
    }

    // 初始化
    setOpenInNewTab();
    observePageChanges();
})();