GitHub to DeepWiki Button

在GitHub仓库页面插入Go DeepWiki按钮,跳转到对应DeepWiki页面

// ==UserScript==
// @name         GitHub to DeepWiki Button
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  在GitHub仓库页面插入Go DeepWiki按钮,跳转到对应DeepWiki页面
// @author       teddyxiong53
// @match        https://github.com/*/*
// @grant        none
// @license MIT
// ==/UserScript==

(function() {
    'use strict';
    // 按钮唯一标识,防止重复插入
    const BUTTON_ID = 'go-deepwiki-btn';
    // 监听目标区域变化
    function insertButtonIfNeeded() {
        const titleContainer = document.querySelector('.pagehead-actions');
        if (!titleContainer) return;
        if (document.getElementById(BUTTON_ID)) return;
        const button = document.createElement('button');
        button.id = BUTTON_ID;
        button.className = 'btn ml-2';
        button.style.backgroundColor = '#2da44e';
        button.style.color = 'white';
        button.textContent = 'Go DeepWiki';
        button.addEventListener('click', function() {
            const currentUrl = window.location.href;
            const newUrl = currentUrl.replace('github.com', 'deepwiki.com');
            window.open(newUrl, '_blank');
        });
        titleContainer.prepend(button);
    }
    // MutationObserver用于兼容GitHub的动态页面
    const observer = new MutationObserver(function() {
        insertButtonIfNeeded();
    });
    function tryObserve() {
        const titleContainer = document.querySelector('.pagehead-actions');
        if (titleContainer) {
            observer.observe(titleContainer, {childList: true, subtree: false});
            insertButtonIfNeeded();
        } else {
            // 页面未加载完全时重试
            setTimeout(tryObserve, 500);
        }
    }
    // 页面加载后启动监听
    window.addEventListener('load', tryObserve);
    // 兼容pjax页面切换
    document.addEventListener('pjax:end', insertButtonIfNeeded);
})();
长期地址
遇到问题?请前往 GitHub 提 Issues。