Greasy Fork

Greasy Fork is available in English.

GoogleEasySearch

建立搜索引擎允许的语法上使我们更快找到自己所需要的内容!

目前为 2022-08-19 提交的版本,查看 最新版本

// ==UserScript==
// @name         GoogleEasySearch
// @version      1.0
// @license      MIT
// @description  建立搜索引擎允许的语法上使我们更快找到自己所需要的内容!
// @author       小乘字节
// @match        *.google.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=google.com
// @grant        none
// @require      http://libs.baidu.com/jquery/2.0.0/jquery.min.js
// @namespace http://greasyfork.icu/users/948036
// ==/UserScript==

(function() {
    'use strict';
    // 配置Google搜索语法
    let dict = [{
        "value": "intitle:",
        "describe": "包含的标题"
    }, {
        "value": "intext:",
        "describe": "包含的内容"
    }, {
        "value": "site:",
        "describe": "指定网站"
    }, {
        "value": "index of /",
        "describe": "网站目录"
    }, {
        "value": "inurl:",
        "describe": "指定路径"
    }, {
        "value": "filetype:",
        "describe": "文件类型"
    }, {
        "value": "related:",
        "describe": "相似网站"
    }, {
        "value": "link:",
        "describe": "查找外链"
    }];

    // 统一管理CSS样式  type: 1(下拉列表的父级元素)、2(下拉列表、dict)
    function earySearchCSS(type, el) {
        switch (type) {
            case 1:
                el.css({
                    "position": "absolute",
                    "top": 5,
                    "left": earySearchX
                });
                break;
            case 2:
                el.css({
                    "width": "100px",
                    "text-align": "center"
                });
                break;
        }
    }

    let form = $("form[action='/search']");
    let q = $("input[name='q']");
    let earySearchX = form.width() + 50;
    let earySearchY = form.offset().top;
    let newValue = q.val();

    // 添加相关元素
    form.append("<div class='earySearch'></div>");
    let earySearch = $("div.earySearch");
    earySearchCSS(1, earySearch);
    earySearch.prepend("<select class='earySearchDict'><option value='-1'>--请添加--</option></select>");
    let earySearchDict = $(".earySearch .earySearchDict")
    dict.map((data)=>{
        earySearchDict.append(`<option value='${data.value}'>${data.describe}</option>`);
    }
            );
    earySearchCSS(2, earySearchDict);

    // 监听select元素
    earySearchDict.change(function() {
        if (this.value === "-1") {
            return;
        }
        // 向搜索框添加内容
        q.val(newValue.concat(" ", this.value));
        // 1秒后重置选项
        setTimeout(()=>{
            this.value = "-1"
        }, 1000);
    });

    // 获取键盘输入的内容
    q.on("input", function() {
        clearTimeout(this.myTimeOut)
        let _this = this;
        this.myTimeOut = setTimeout(()=>{
            newValue = _this.value;
        }, 300)
    })

    // 清空搜索框
    let ariaLavels = [$("div[aria-label='清除']"),$("div[aria-label=' Clear']")];
    ariaLavels.map((ariaLavel)=>{
        console.log(ariaLavel);
        ariaLavel.on('click', function() {
            newValue = '';
        })
    });

})();