GoogleEasySearch

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

À partir de 2022-08-19. Voir la dernière version.

Vous devrez installer une extension telle que Tampermonkey, Greasemonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Userscripts pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey pour installer ce script.

Vous devrez installer une extension de gestionnaire de script utilisateur pour installer ce script.

(J'ai déjà un gestionnaire de scripts utilisateur, laissez-moi l'installer !)

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

(J'ai déjà un gestionnaire de style utilisateur, laissez-moi l'installer!)

// ==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 https://greasyfork.org/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 = '';
        })
    });

})();