GitHub 简易搜索

Help perform advanced GitHub searches with dynamic parameters.简单搜索Github方法。

目前为 2024-05-05 提交的版本。查看 最新版本

// ==UserScript==
// @name         GitHub 简易搜索
// @namespace    http://tampermonkey.net/
// @version      1.2
// @description  Help perform advanced GitHub searches with dynamic parameters.简单搜索Github方法。
// @author       Hill
// @match        *://github.com/search*
// @grant        none
// @license      MIT 
// ==/UserScript==

(function() {
    'use strict';

    // 创建一个简单的表单来输入搜索参数
    const formHTML = `
        <div id="searchForm" style="position: fixed; top: 20px; right: 20px; background-color: white; padding: 10px; border: 1px solid #ccc; z-index: 1000; display: block;">
            <div>
                <label>Search Query:</label>
                <input type="text" id="searchQuery" style="width: 200px;">
            </div>
            <div>
                <label>Stars (>N):</label>
                <input type="number" id="searchStars" placeholder="Enter number" style="width: 100px;">
            </div>
            <div>
                <label>Language:</label>
                <input type="text" id="searchLanguage" style="width: 100px;">
            </div>
            <button type="button" id="searchButton">Search on GitHub</button>
        </div>
    `;

    // 插入表单到页面
    const formContainer = document.createElement('div');
    formContainer.innerHTML = formHTML;
    document.body.appendChild(formContainer);

    // 定义一个函数来处理回车键事件
    function handleEnterPress(event) {
        if (event.keyCode === 13) { // 检查是否是回车键(键码 13)
            event.preventDefault(); // 防止默认行为
            document.getElementById('searchButton').click(); // 触发搜索按钮的点击事件
        }
    }

    // 添加事件监听器到每个输入框
    document.getElementById('searchQuery').addEventListener('keypress', handleEnterPress);
    document.getElementById('searchStars').addEventListener('keypress', handleEnterPress);
    document.getElementById('searchLanguage').addEventListener('keypress', handleEnterPress);

    let timeout = null;

    // 监听滚动事件
    window.addEventListener('scroll', function() {
        // 当用户滚动时隐藏表单
        document.getElementById('searchForm').style.display = 'none';

        // 如果之前设置了定时器,则清除
        clearTimeout(timeout);

        // 设置定时器,滚动停止500毫秒后显示表单
        timeout = setTimeout(function() {
            document.getElementById('searchForm').style.display = 'block';
        }, 500);
    });

    // 处理搜索按钮点击事件
    document.getElementById('searchButton').addEventListener('click', function() {
        const query = document.getElementById('searchQuery').value;
        let stars = document.getElementById('searchStars').value;
        const language = document.getElementById('searchLanguage').value;

        // 格式化星标搜索参数
        if (stars) {
            stars = `>${stars}`; // 构建大于指定星标的搜索条件
        }

        // 构建搜索URL
        let searchURL = 'https://github.com/search?q=';
        if (query) {
            searchURL += encodeURIComponent(query);
        }
        if (stars) {
            searchURL += '+stars:' + encodeURIComponent(stars);
        }
        if (language) {
            searchURL += '+language:' + encodeURIComponent(language);
        }

        // 在新标签页中打开搜索结果
        window.open(searchURL, '_self');
    });
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址