Greasy Fork

Greasy Fork is available in English.

多吉搜索直达按钮(暨多吉搜索页面美化)

给百度、360、搜狗、必应、谷歌等搜索引擎的结果页加入多吉搜索按钮,一键跳转到多吉搜索进行相同关键词的检索;给多吉搜索结果页增加谷歌搜索按钮,并提供简约样式美化功能。

目前为 2019-11-23 提交的版本,查看 最新版本

// ==UserScript==
// @name         多吉搜索直达按钮(暨多吉搜索页面美化)
// @description  给百度、360、搜狗、必应、谷歌等搜索引擎的结果页加入多吉搜索按钮,一键跳转到多吉搜索进行相同关键词的检索;给多吉搜索结果页增加谷歌搜索按钮,并提供简约样式美化功能。
// @icon         https://www.dogedoge.com/assets/doge_ico.png
// @namespace    http://greasyfork.icu/zh-CN/users/393603-tsing
// @version      3.1
// @author       Tsing
// @run-at       document-start
// @include      *://ipv6.baidu.com/s?*
// @include      *://www.baidu.com/s?*
// @include      *://www.so.com/s?*
// @include      *://www.sogou.com/web?*
// @include      *://www.sogou.com/sie*
// @include      *://www.sogou.com/sogou*
// @include      *://www.sogou.com/tx*
// @include      *://*.bing.com/search?*
// @include      *://www.google.com/search?*
// @include      *://www.google.com.*/search?*
// @include      *://www.dogedoge.com/results?*
// @require      https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_deleteValue
// @note         2019.10.31 V1.0 在百度搜索的结果页加入多吉搜索按钮。
// @note         2019.11.06 V2.0 听取多吉搜索开发者 @nicoljiang 的建议,给检索关键词进行 urlencode 编码,并新增支持360、搜狗、必应搜索。给多吉搜索选择一个特征色号:#dd2248,保证视觉统一性。
// @note         2019.11.16 V2.1 感谢多吉搜索首页(https://dogedoge.com)推广该脚本!本次去除了各搜索引擎结果页面上按钮偶尔出现的下划线,新增了部分颜色动效,和原网站的一致性更高。
// @note         2019.11.20 V2.2 新增支持谷歌搜索引擎,感谢Greasy Fork站点网友 @魏信壹 的建议 。
// @note         2019.11.23 V3.0 当用户修改输入框中的检索内容然后直接点击多吉按钮时,可以实时更新多吉搜索的检索式。同时在多吉搜索的结果页面新增了一个Google的搜索按钮。
// @note         2019.11.24 V3.1 给多吉搜索的结果页面新增简约样式美化功能(内容加宽+居中显示+动态投影),并支持随时开启和关闭。
// ==/UserScript==

(function() {
    'use strict';

    var hostname = window.location.hostname;

    if(hostname.match(RegExp(/baidu.com/))){
        // 百度搜索
        document.addEventListener ("DOMContentLoaded",show_button_baidu); // 参考:https://stackoverflow.com/questions/26268816/how-to-get-a-greasemonkey-script-to-run-both-at-run-at-document-start-and-at-r
        function show_button_baidu () {
            var url_baidu = "https://www.dogedoge.com/results?q=" + encodeURIComponent($("#kw").val()) + "&from=TsingScript";
            $("#form").append('<span style="display: inline-block;"><a href="' + url_baidu + '" target="_blank" title="使用多吉搜索引擎检索该关键词" id="dogedoge" style="display:block; float:left; font-size:14px; text-align:center; text-decoration:none; width:100px; height:33px; line-height:33px; margin-left:5px; color:#fff; letter-spacing:1px; background:#3385ff; border-bottom:1px solid #2d78f4; outline:medium;" onmouseover="this.style.background=\'#317ef3\'" onmouseout="this.style.background=\'#3385ff\'">多吉搜索</a></span>')
            $("#kw").change(function(){ // 用户修改页面上输入框中的内容,然后直接点击多吉按钮,需要实时更新href。
                var url_baidu_new = "https://www.dogedoge.com/results?q=" + encodeURIComponent($("#kw").val()) + "&from=TsingScript";
                $("#dogedoge").attr('href',url_baidu_new);
            });
        }

    }else if(hostname.match(RegExp(/so.com/))){
        // 360搜索
        document.addEventListener ("DOMContentLoaded", show_button_360);
        function show_button_360 () {
            var url_360 = "https://www.dogedoge.com/results?q=" + encodeURIComponent($("#keyword").val()) + "&from=TsingScript";
            $(".adv-search-wrap").after('<span class="adv-search-wrap"><a href="' + url_360 + '" target="_blank" title="使用多吉搜索引擎检索该关键词" id="dogedoge" style="display:block; background:#19b955;height:38px;line-height:38px;width:90px;text-align:center; text-decoration:none; color:#ffffff;font-size:14px;" onmouseover="this.style.background=\'#1bc550\'" onmouseout="this.style.background=\'#19b955\'">多吉搜索</a></span>');
            $("#keyword").change(function(){
                var url_360_new = "https://www.dogedoge.com/results?q=" + encodeURIComponent($("#keyword").val()) + "&from=TsingScript";
                $("#dogedoge").attr('href',url_360_new);
            });
        }

    }else if(hostname.match(RegExp(/sogou.com/))){
        // 搜狗搜索
        document.addEventListener ("DOMContentLoaded", show_button_sogou);
        function show_button_sogou () {
            var url_sogou = "https://www.dogedoge.com/results?q=" + encodeURIComponent($("#upquery").val()) + "&from=TsingScript";
            $(".querybox").append('<a href="' + url_sogou + '" target="_blank" title="使用多吉搜索引擎检索该关键词" id="dogedoge" class="sbtn1" style="text-align:center;text-decoration:none;line-height:34px;color:#333;" onmouseup="this.className=\'sbtn1\'" onmousedown="this.className=\'btnactive\'" onmouseout="this.className=\'sbtn1\'" onmouseover="this.className=\'btnactive\'">多吉搜索</a>');
            $("#upquery").change(function(){
                var url_sogou_new = "https://www.dogedoge.com/results?q=" + encodeURIComponent($("#upquery").val()) + "&from=TsingScript";
                $("#dogedoge").attr('href',url_sogou_new);
            });
        }

    }else if(hostname.match(RegExp(/bing.com/))){
        // 必应搜索
        document.addEventListener ("DOMContentLoaded", show_button_bing);
        function show_button_bing () {
            var url_bing = "https://www.dogedoge.com/results?q=" + encodeURIComponent($("#sb_form_q").val()) + "&from=TsingScript";
            $("#sb_form").append('<a href="'+ url_bing + '" target="_blank" title="使用多吉搜索引擎检索该关键词" id="dogedoge" class="b_searchbox" style="display:inline-block; width:100px; line-height:32px; margin:0 0 0 10px; padding:5px; color:#444; font-size:16px; font-weight:500; text-align:center;text-decoration:none; border-radius:6px; border-color:#eee; box-shadow:0 0 0 1px rgba(0,0,0,.1), 0 2px 4px 0 rgba(0,0,0,.16)" onmouseover="this.style.background=\'#f5f5f5\'" onmouseout="this.style.background=\'#ffffff\'">多吉搜索</a>');
            $("#sb_form_q").change(function(){
                var url_bing_new = "https://www.dogedoge.com/results?q=" + encodeURIComponent($("#sb_form_q").val()) + "&from=TsingScript";
                $("#dogedoge").attr('href',url_bing_new);
            });
        }

    }else if(hostname.match(RegExp(/google.com/))){
        // 谷歌搜索
        document.addEventListener ("DOMContentLoaded", show_button_google);
        function show_button_google () {
            var url_google = "https://www.dogedoge.com/results?q=" + encodeURIComponent($(".gLFyf.gsfi:first").val()) + "&from=TsingScript";
            $(".RNNXgb:first").append('<div style="display:inline-block; height:100%; width:80px; border:3px solid #ffffff; box-sizing: border-box; border-radius:30px;"><button id="dogedoge" type="button" style="height:100%; width:100%; border:none; outline:none; border-radius:30px; font-size:15px; cursor:pointer; background:#eeeeee;" onclick="window.open(\''+ url_google + '\')" title="使用多吉搜索引擎检索该关键词">多吉</button></div>');
            $(".gLFyf.gsfi:first").change(function(){
                var url_google_new = "https://www.dogedoge.com/results?q=" + encodeURIComponent($(".gLFyf.gsfi:first").val()) + "&from=TsingScript";
                $("#dogedoge").attr('onclick','window.open("'+ url_google_new + '")');
            });
        }

    }else if(hostname.match(RegExp(/dogedoge.com/))){
        // 多吉搜索样式美化,立即执行。
        var style_text = ` .results_links_deep{box-shadow:0 0 5px #eeeeee} .results_links_deep:hover{border:1px solid #dddddd; box-shadow:0 0 10px #cccccc; transition:all 0.2s;} .cw{margin:0 auto} .results--main{max-width:850px} `;
        var style_tag = document.createElement('style');
        style_tag.id = "dogedoge_tsing_style";
        var show_active_btn = true; // 默认打开样式美化开关
        // GM_deleteValue("tsing_style_on");
        var storage = GM_getValue("tsing_style_on"); // 文档:https://www.tampermonkey.net/documentation.php
        if(storage){ // 判断有没有本地存储数据
            console.log("Tsing Storage Value: " + storage);
            if(storage == "open"){ // 配置信息:打开样式美化
                style_tag.innerHTML = style_text;
                document.head.appendChild(style_tag);
            }else if(storage == "close"){ // 配置信息:关闭样式美化
                style_tag.innerHTML = "";
                document.head.appendChild(style_tag);
                show_active_btn = false;
            }else{ // 一般不会出现这种异常情况
                console.log("Tsing Storage Value: " + storage);
                GM_setValue("tsing_style_on","open");
            }
        }else{
            console.log("Tsing Storage Empty");
            GM_setValue("tsing_style_on","open"); // 新用户没有配置数据,则默认开启样式美化。配置数据存放位置:https://stackoverflow.com/questions/16823686/where-does-gm-setvalue-store-data
            style_tag.innerHTML = style_text;
            document.head.appendChild(style_tag);
        }

        document.addEventListener ("DOMContentLoaded", show_google_button); // This is the equivalent of @run-at document-end
        function show_google_button () { // 给多吉搜索增加一个Google按钮
            var dogedoge_to_google = "https://www.google.com/search?q=" + encodeURIComponent($("#search_form_input").val()) + "&from=TsingScript";
            $("#search_form").after('<button id="dogedoge" type="button" style="display:block; height:44px; width:80px; margin-top:-44px; margin-left:596px; font-size:1.2em; color:#222222; background:#ffffff; outline:none; border:1px solid rgba(0,0,0,0.15); border-radius:4px; box-shadow:0 2px 3px rgba(0,0,0,0.06); cursor:pointer;" onclick="window.open(\''+ dogedoge_to_google + '\')" title="使用谷歌搜索该关键词">Google</button>');
            $("#search_form_input").change(function(){
                var dogedoge_to_google_new = "https://www.google.com/search?q=" + encodeURIComponent($("#search_form_input").val()) + "&from=TsingScript";
                $("#dogedoge").attr('onclick','window.open("'+ dogedoge_to_google_new + '")');
            });
        }

        window.addEventListener ("load", show_style_switch); // 页面完全加载后执行
        function show_style_switch(){
            // 加一个美化样式开关,刷新页面
            var btn_open = `
            <div id="style_switch" class="dropdown dropdown--region is-active">
                <div class="dropdown__switch switch js-region-filter-switch is-on">
                    <span class="switch__knob"></span>
                </div>
                <a id="style_status" style="text-decoration:none; color:#666666;" title="内容加宽+居中显示+动态投影 by Tsing">已启用样式美化</a>
            </div>
            `;

            var btn_close = `
            <div id="style_switch" class="dropdown dropdown--region is-active has-inactive-region">
                <div class="dropdown__switch switch js-region-filter-switch">
                    <span class="switch__knob"></span>
                </div>
                <a id="style_status" style="text-decoration:none; color:#bbbbbb;" title="内容加宽+居中显示+动态投影 by Tsing">已关闭样式美化</a>
            </div>
            `;

            if(show_active_btn){
                $("#chinese-only").after(btn_open);
            }else{
                $("#chinese-only").after(btn_close);
            }

            $('#style_switch').click(function () {
                if ($(this).children(".dropdown__switch").hasClass("is-on")) {
                    $(this).addClass('has-inactive-region');
                    $(this).children(".dropdown__switch").removeClass('is-on');
                    console.log("Switch Off");
                    $("#dogedoge_tsing_style").text("");
                    $("#style_status").text("已关闭样式美化");
                    $("#style_status").css("color","#bbbbbb");
                    GM_setValue("tsing_style_on","close");
                } else {
                    $(this).removeClass('has-inactive-region');
                    $(this).children(".dropdown__switch").addClass('is-on');
                    console.log("Switch On");
                    $("#dogedoge_tsing_style").text(style_text);
                    $("#style_status").text("已启用样式美化");
                    $("#style_status").css("color","#666666");
                    GM_setValue("tsing_style_on","open");
                }
            });
        }

    }

})();