您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
划词搜索
// ==UserScript== // @name selection-search // @version 10000 // @author logan // @description 划词搜索 // @homepage https://github.com/loganoxo/selection-search // @homepageURL https://github.com/loganoxo/selection-search // @supportURL https://github.com/loganoxo/selection-search/issues // @icon data:image/png;base64,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 // @match *://*/* // @exclude *://192.168.*.* // @exclude *://10.*.*.* // @exclude *://172.16.*.* // @exclude *://127.0.0.* // @exclude *://localhost // @exclude *://*.local // @grant GM.openInTab // @grant GM.setClipboard // @grant GM.getValue // @grant GM.setValue // @grant GM.xmlHttpRequest // @run-at document-end // @license MIT // @namespace https://gf.qytechs.cn/users/1317201 // ==/UserScript== (async function () { "use strict"; /////////////////////////////////////////////////////////////////// // 配置 /////////////////////////////////////////////////////////////////// //=========================定义网站数据======================================= function SiteInfo(_name, _url, _homepage, _icon) { this.name = _name; this.url = _url; this.home = _homepage; this.icon = _icon; this.callSiteInformation = function (_enable = true) { return { name: _name, url: _url, home: _homepage, icon: _icon, enable: _enable, }; }; // this.callSiteInformationNoHomepage = function (_enable = true) { // return { // name: _name, // url: _url, // icon: _icon, // enable: _enable, // }; // }; } // 百度 const Baidu_ICO = "data:image/png;base64,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"; const Baidu = new SiteInfo( "百度", "https://www.baidu.com/s?wd=%s&ie=utf-8", "https://www.baidu.com/", Baidu_ICO, ); // 谷歌 const Google_ICO = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAACDVBMVEUAAAD+/v7+/v79/f39/f39/f39/f39/f3+/v7+/v79/f39/f39/f39/f3+/v7////9/f39/f39/f39/f3+/v7+/v79/f39/f3+/v7+/v79/f39/f3////+/v79/f3////9/f3+/v7+/v79/f39/f39/f3+/v7////9/f3+/v79/f39/f39/f3////9/f3////+/v7////85uT1pZ7wdGrsVUjqRjjqRTfsU0bvcmj1oZr85OL85+XxgXjqRDbqQzXxf3b3urXrSz7rTD/4v7r1p6DyioHuZVn0m5P3tK73ta/0m5TuZlryjob//v7rSj3tXFD5zMj5y8fsWEzzlIz0kG3vbGH+8vL+9fT+9t37uQfxdyD98O7934b7vAX1kxXrSTT3uLP8zUb5riH/+/v7whz801lChfS/1fv7vQf93H2lxfqfwfn80liqyPr8zkfkwi76/fve6v3B1/v934iztSE8qFCw3byox/rn8P7+9t/2vAmGsDM0qFNGsGLs9+/z9/5UkPVgmfaPx4JcuXXw+fL6/P93p/epyPrm9Oo+rFtMsmfC5cza7+BjsahChfH2+f634MJUtm6Nzp+q2rer27iV0qVkvHs1qFQ3oHdBiePD2Pyj2LE1pWA+jsq54cQ+rFw3qVab0rHn9et7xo82qVRnvn7X7t2h169swIJJsWU4qlZGsGNlvX3Y7t5rzgcKAAAAMXRSTlMADlqcy+367Fknn/f2nSUKjfz7iwkm1dIkMuvqMAuKD/UNV5nI+VYMmiOH09AI6CIvZ7+SkQAAAAFiS0dEDxi6ANkAAAAHdElNRQfmCBALMiy/XZkSAAAB7klEQVQ4y2NggANGJmYWVjY2dhZmDkYGTMDJxW0IBzy8fGjS/AKChihASFgEWV5UzBADiEsg5CWlwEJGxiamZuYWllbWYK60DFw/WN7G1s4eCuwcbMAqoGbIgs13dLJHAs4uYFsg7hAAsV3tUYEb2BY5sP9A7neECLt7eHp5+wAZvn4Qv4As4QI5zx8kHRAIcX9QcAjMK8wMDPKg8AkFyYeFw4Qj4H5VUGRgAlKRUdH29qYxhliAEgMzkIyNi4tPSMQmb6jMwAIkk+Li4pJTsCpQYWAFkqlABWlQkXQEyAAFFgMbkMwEKsjCVJAN5KriU5ADVsAOtSIXU0Ee2AqQI/OBCgoKkd1WBFJQDHYkyJslcXGlZeXICipACirB3uQAklXVNbW1dfUI+YZGoHwTiKXGwMgDpJprgaClFSbf1g4yoAMU1OoMDLxAurMLpKK7ByLf29cPlG+cAGRqAGOTTwjImFgLBpMmT5k6bfqM2pmz0tNnA4XZNEEJQhika04tCpg7DxQIhlqQJK8NYs9fgKxg4SKQmI4uJFFKSIN4i5cshcsvWw4S0dOHJWsZsArDzhUrV61euGbttHVgrp4BImNIiGNGtI4+ctYSkRNClWbT0kXLnRLMCghpBQ1NLPlbUUlZRVpVVVpFWU0dIQoAIFvbhdFCbusAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDgtMTZUMTE6NTA6NDQrMDA6MDC+ka4IAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTA4LTE2VDExOjUwOjQ0KzAwOjAwz8wWtAAAAABJRU5ErkJggg=="; const Google = new SiteInfo( "谷歌", "https://www.google.com/search?q=%s&ie=utf-8&oe=utf-8", "https://www.google.com/", Google_ICO, ); // 必应 const Bing_ICO = "data:image/png;base64,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"; const Bing = new SiteInfo( "必应", "https://cn.bing.com/search?q=%s", "https://cn.bing.com/", Bing_ICO, ); // github const GitHub_ICO = "data:image/png;base64,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"; const GitHub = new SiteInfo( "GitHub", "https://github.com/search?q=%s", "https://github.com/", GitHub_ICO, ); // 哔哩哔哩 const Bilibili_ICO = "data:image/png;base64,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"; const Bilibili = new SiteInfo( "哔哩哔哩", "https://search.bilibili.com/all?keyword=%s", "https://www.bilibili.com/", Bilibili_ICO, ); //youtube const YOUTUBE_ICO = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAGxlWElmTU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUAAAABAAAARgEoAAMAAAABAAIAAIdpAAQAAAABAAAATgAAAAAAAACQAAAAAQAAAJAAAAABAAKgAgAEAAAAAQAAAICgAwAEAAAAAQAAAIAAAAAAIqTtcQAAAAlwSFlzAAAWJQAAFiUBSVIk8AAAFCxJREFUeAHtnXmMXEedx3/d03OftmPHYwcWSOyYHMR4949wSNkYKYRshCAiICBBYhWIHcS1iQSIRFlE4J/diEsiCfwTKQHBBoFAK4hABAWkEAkphCQgO46zhtjja27PeK6e7v18q7uee2xPu+eo18e8n1SvXtWrV8fv+6tf1auqV5WyGqX/MWu51Sx9wqw3ZdY/a7Yub9begn/ObCtmU5NZD3Y7/hnC9FKUbdib8etOmzXjTxDDy1K6iPArS2eFU3CZecwcz8ZxHMfeTxqnsLOkM4XfGO4TGbMB8jnbZjY5gV877ot55wmz3AfxL5twlR768gZPHia1HAUwOHkpiW0AmQ0w7c34b4Rxm7C34t+NaeVeoLdyD3+tifs0fjIFNLF5xz1UAE9CSWGI19m6F3m74Kr86pkjW0ZpeeNjUVpK16ct/+J7OdL1j2VPY8a5maHsEqQjuAcJO4LZP4ew4B7i2cH9ZhPXF8LjFZaKeV21RNLHza4l0n/Nml2FfRkFXU/sArYbt3DLwARXI5vlwCgTpSCJWzIi+Zca51n08/e1YKsMnnRfauR/tuD4MktwvGqgnHnCZSn7PM8nMSM8Hsb/AP5/xf00GuUZxbdapHysmBDd24noE5i3ElknmU2hqiNQBaCvIQJWbpG3C661e/UgyJageFv3IrklJPBOLJuAly+gHh+5yOwx3Csin/aSIyEnbcfMHkBl/TsZW0e7Z9R6ZwRyQqvPAQmEU6HYak9wj8DzR6mA9/6L2enlpLgsAaAtvxvg7yMDaquddCa1eTnsX/474rvXsvB+DA3xAJ2o/15qjEsSADonW+lq/y/A70QAbGapqSXhg3BAvWU1sWje59EQN9M0qINZEUmrVESHzG7qM9uHqt+pxBLwK2JbLIGEhTApYrPvNbCqNOGKBIA25hMdZj+n196lhiZR95WyN75wwkTYCCM0ws//z+zOSlK/YBMg8FH3D2PS/nOlkoiTMNXjgPoGNAc58LrrEr4WyuWkrAAA/g2oiF/SrjQl4JdjY+09kxDQLMxjbtpi9uvFcrioAJxk+JVPjAOok059ciRUfxzQpzn9g0kq8LaNZkfPV4JF+wAMTf6SsewE/PNxrU78VHGFIULwq8WyfF4BOGz2OaRmZ1LzF2Nb/fgLQ5qDa2jOP3e+XJ/TBNCb7CDwMdRHtz4vEqp/DtCMa+TwFH2BzQC+YMTwHA0A+P/JCwn49Y97VAJVZGEqbCPP4s0CDUDtzzCEdJJ2oy+p/Wezqr7dRS0wihbYCOiatnG0QAMcNfsgbX/frH+a2A3DAWHKWE6fMC4t1AIBQAPs1acDdkINxgFhWsR2T2nRIgGQ+kc17Ix0Q2mo5L4hOCBsAfytwtoXKBIAVvIwpWydiQB41jSeLWwBv7OItStgJACMHe9GLFLJYo7GA96XSNgKY6zrvV8kAHhc0eJ9E7thOSCMkYArfQFLBWC7OgoJNTYHhDGaYLsvZSQASMU675nYDc+BCOtIAJCM3qT9b3jgVftF+onGkRMAwM9guhIB8GxpXFsYY7qEuUrpBIDRoT5uJAQJNTgHhLGwFuYqqhMAVo1cilToj52EGpwDRYwzwlxFdQLQSgeQTmAq0QANjj7FE8aYFPMCriPo2gGkoR8BSGiNcKCIdb+K6zQA9uUsJ04mgcSRBidpAGENXa6LEwDGiPW7dkJrhAPCWpiruE4AUAmbkiZgjaBPMYW1MFeJ/bfg1lrvAFaSv0iI2X0g1Yyiy1A87JTsNLLe1GQp2TIiv29Ivhh7Lmd5jFtNz4r6vFbVz7E+Opu1vOxiuCXlpZBSTV2Vf7QAi4OKAoDdJUe1qZSxDkyASnV1Wbq721I9PZZev96ZVF+fpTdsKNz39lqaZ3qusKnOTkt1dFiqlW8bgd/C9IdswJcAREKgwnpBEOjQAvAB3QE/y1oawM/PzFj+9GnLT05afmLC8uPjlsPkx8YsNzxsuaEhy4+OFu5xu+enTrmwJsFyKRQukaCW+MV9S360aUe0MECLRapGYk6qrc1a3vIWa3nb2yyD3fS611l640ZLA7YAd6AKzIC0WsDkERonLBIImZMnbf611yz7wgs2+8c/2txf/uIEarXSWyZLHOauCSAj2mwpdhLwGYBuv/12a/vQh6z5qqvO1MrYc7N6CUrrOM2D4KrDtYDQBnMvvmjTP/6xTT3+uGURjLgFoYh1j/KlwR8NC47TYrbTysVCAj6Nqu787Get89OftvTmzbGkW2uJ5I4ds4lvfctOf/vblqN5iUsQ9BlIwzZFJ6BHAtCGAIzi2RqHAAj85iuvtN5HHrGWd7yj1jCpSn5m//AHG/vkJ21u375YhEACANYzjAT1pV41u5jG4DBtQUZrxkKSwG+59lpb98QT1nTJJSGTqru45//xDxv5wAds9k9/Ci4EavdpBlTfL0nT/dcwsNuDLyTXBH5m27YE/EWY3PT619u6n/zEMpdeuuCLYZHgK/IWFpgmPoa3aNMH7cAZXADUKep76KGk5peBTkLQ+93vFsYwyoRb6SMJAJSm4vem+bDSzpxBpU7xt99yi7W8611KOKEyHGi94QZrg1dFkMqEXP4jxa0vAex21fy20L1PDcJ03Hnn8nO8xt7s3LOnMHAVsNzCXNin6fhtCS0AGtDJ7NwZsDiNFbV4JZ6FJGEu7DUYql23g6kcqRt1bNIM2SZUGQfEq8yb3hQUE2FOM7DJdQTOGa2qLJ8Vh8rs2HFm4qXit9ZwQCapmsSzgCTM0QK9aaSgvTg3Fiw5JwDBYj9/xJqgqWcKzTNhzoBQW5oJz9AKwJq2Rz+ixIbJ5He+Y6O33WYaYKlHysTAM5rndJpRoaCNs+biNbMXOzGFO/mDH9jg299upxl2dvP6sWdi+QmKZ24Ke/lRXPBNBKBXn4Hb9U0YijRXX5XJHi0KoVC5I0dslM+qoRtvtLlnnw1VzFWPVzwT70JRcRxguzqBOmMnGLmFG0yLVpMkCDNPPWWDu3fb+D33WG5wsJrZqSjt9Lp1btFLRYGXEaiIeb80QHcoASBu9z2rxR7VJgmBTU3ZxIMP2hDNwtSPflTtLJVNXzzTWIB4GIKKmHdLA+h0rWCU3sTaQ7/2LlgqlUcsQcgeOGAjH/6wjTDkmv3b3yp/Oc6Q8Cx9MScEBaIi5i36GmgKKgABC7ES3kgQpn72Mxt85ztt4mtfK6zdW0mEAd51lSdAvD5KcNeMYNjp59BDmr4wy7ElBPmRERu/914buu46m/nVolvqLif6Fb8Tkneq9ICfUh9AfAhG6szUOokBs889Z8M332yjH/+4zR86VBNZDs07Ya8+QLCOhrio5dr1QK4WsGDz9KOP2iArkyeZlzctCa8ipQLOn0gDqMzSAEFJa/rricQULdYc+9SnbIi5+dlnnqla9vWfQ0gS9uoDhKV2dh6uQ5IgzDz9tA2xiGX885+33AlOMY6ZUjHwLrgA1MIYwHJxc83C9LRNfPObNsgK5qkf/pD2MrTOPJPbOHgXXADc/3lnylSXdxKE7Cuv2MhHP2rD73ufzfGHTyykfxoDU1ABEONCT2gE5k8UvSsLrulf/MKG0Aanvvzl4GMH4p3TQlEuVv8mqACsfnaTGFebA0F1jFpL94v1aue6CvH5lr/tve+17q9+1Zr5gTU0iXdKN6QWCCoAjkH6zbrOSSBkLrvMur/yFWv/yEfiK00MvAsuAHl60fVKrvYxK9fFeoKuL33JQo/Nn82nOHgXXAA0BVuPJPBbmR/o/vrXrYXp42pQPgbe6ZSQoEPBOXbJqCcS8E39/dbFBFHnHXfwNyv/TlWJ8oF5J+yDbw+rrVLqgZy65y+Jjo99zLrvv9+a3vCGqmc7JO98xZcGcGXXJQTlmG6tdVLZW3btsu4HHrDW97ynZrIbmneUO68+gBOAUKWuxhh6pWVRwTXl2n333W63ktCTL5Xmy4fT3kKhSBqAQaCcBGAeR7BZwZCFWAlzBH77+9/van3miitWElWwd0NXHniQ0w7hc0iBdg0JQrnjnFGlCZQaWRco4JvZqKKLwZx2NqaqWYJnjneBMigNAM2qD3AKVdDBH0KrTkpEGkDfs3FMbZYrgIBXHrqY5+/6whcsfdFF5YJX/Zl4Jt4VgVr1/GgOgMo/ribgGI5gy0/9BorVFACB37p7t/Ww+LOZPYrqgdQBFO9CkQQAvgyk+THwgByhSLtpzrPCJnZChQr49Nat1vfww7bhySfrBnzxSquSxLtQJMzRLge0R9BoqEQUb57xbO2SGTuxPWwn8/cXsaTL7U6Cu55IPAs9kcYszUQGDRCi+V/A6/mXX17gjsPR+ZnPuE+8ONIKkUY2Bp6BfVY7hEyF+jXMMybLBohxU+gl1aHLE5pnRcyntD/AeGgV4AoT41q60OAEjx9ezQeuNMKcPsCYNMCJoiNIufQZkz140HJsq55QZRwQr7KvvhrsE1CYCHM6ycclAEfUWw5J+p7NPv98yCQaKm7xKvQIqjCnE3hMTcB0aAFQb/Y0n2IJVcYB7WgS+gtAOWEQaFqbRM1IJciEIsU99dOf2sxvfhMqiYaJd/a3v3W8Co2HKj0fxlP6N3AURz5kgkJHZ+6M7d1bt5s2xSFh84cP2+hdd5lOHAlJwhqTm1AncIbhQByaEQxKil+dQW2JXq87d4Vk0Dx7GY3ceqvp+z8OLIQ544wD6TciBRQsuACIeSqY9sMffve7bfb3v5dXQnBAP6AOs4nVLJtYhQZfDFcaaP0cC9vH+QhQZ9BtHo0VnpS4TsZQgce/+EXLHeW8kjVKmu8/dd99NsxfyHMvvRQL+CWs1lhQ1gkcEAyz9HEdzUGspI6ITg7p8IdGXX01szeSyQYmHRoF2NOcmjL12GOW/fvf4wbeWmEvi/VHtpqtdwIwYHaIn7j/qVoLuCUIOuevmV2ydWxc8zXXWBrB0BYpOjbObTStswCruEJ3KSLpOnEcAqUBHX9sXI4Ono6Li46N0xqJpUS6imH1wz4CcIgzg97o8nDYbH8nG0ZWSwB82SQInlzG9HOkDo7UgZDacNIfFimh8PeLHRwpYcHoBNHoFFF/cKRWJ0nT+FVKGqbW4Y6ydVqoDLOY+nJxJ4bqHEB/FmAlB0fqEEmmcnM6YBKj+M4pmy9oFWwJAFjv32K2QwtCtDiwJhbvn1MjxDhq0TwmTy/5QhS9D7AOdIGvX6xlBD6gu7+VBbw3ilTAF40bgEEYIiHQ71leEBRGwd21/CXKSzHY2e7yb8fy1GHuBIDMHcH8cyzJLjORJTEQoJwaVq1dZnrlXltSXspFVKVnyj86ztUo1+OCSSdCMKpK5UuSvQAHhDWjgKzWddrfqbQRJCKhNcIBYY0ZVnGdBsCxT6cI1rtqU4ESKs8BYSysAd6t0nECQEdgIGkCyjOukZ4Ka8yZJoAPphEkI/iEUCMxsV7LUtTyeTB3a86dBmDu6SAFyjpHvZYsyXdFHChinN1QwLzQB2BESEvDC+PCFUWTBKpXDhQ1gOZ/3E8HTiDwzNImTCYaoF5hrTzfDIep/Z8Q5norwhyP0chReXxJyDrjQFEDRCt0SzGv/Z0c6ozZtZpdQHdjAMpfJACohVeK0lGr+U7ytQocEMZgfcBHFQkAHi+FXYnmk0zsanKgiPFffR4iAeDmKXoF+cjDh0jshuGAsBXGjPw+5QsVaX3UQoafuEeYJOhKNIFnT2PZDP5oGHhiM6u/AP6cr4Ass+DPu/nhxip3UpoiB4QtGP/Zgy/vBRqfBw+xVCiZFBJnGoyk6oUt9FDBKlzlH5GaAVYJnGTJUF/cC0SjTCQ3QTighaBgOsKo76ZyGkDDwd9HEBJqMA4IU0YBv1cKvoq4QAPIg4AddAaP0mHoSbSAOFL/VKz949T+fgA/XVqiBX0APVAAPhPuxyzsIJS+ldzXDQcEMB0/YXnf2eCrEOdoAHmKDtNb5NS6nQvEpfAoudYRB1jub5NgucVs1/myfY4G8IFQGzexdnyyzXskdt1xQNjxV8IkYzv/tljmFxWAjfQD6A/cwqDQvAYQEqovDggzYYeKv0VYLpb7RQVAL6A2fk37sZf+QC4RgsVYWHv+wgrc9HvLXmFYLodlBUAvEsH3EYA9RJZNmoNyrKyNZ8JIWDHOu0fYXShXi3YCz35xwOxGpOUJEujSP4TJWMHZHKquW0Dqnz8+3SeosLcC/pOV5OiCGsBHoghZRrJj1uw5vaRvy4RqgwPCQku9qJh/ZnHnjkrBV+4rFgAFvpz/yTbxDyG1/z+QslG1NUq8YjWiSBJaFQ6I5+K9MEDdj4HHPQz07BJGS0lgSQLgI2Y68RusKOgn0f8i8WFlpgOjzCwrQh9xYpflgHgrHovX4rl4j0b+xmt01QD/QbyWTKtSeQfNbiMzdxDZLrRDFxlNKaO+nyAbYXFuOigL/HGuefIgyBbI3vaVSW6AVudOrFQb/wK1/2GOvHgc94rIp72iSEpfpp9wLRm8jqnHq4l8G8/Wk+se7G6MpqRlXLoMUEQOLyx4uaFLCYpI/qXGeRb9/H0t2KWM1H2pUf4EpgdUbj1XuVQxBK4It1ZkaV2Gvt8ZwLNR7GH8X8H/RTp5v+s1e9YFXqWL8hELUYgWhpcZXXZCsYFOy3oKegXSsAH7Yvy3YrrJkJq2HsKrU6t9DMW3JsLoviA58iiaUqYSJhIe3ncMxnIk91LJM8enq7S88XEpTYEo49Mshs9hz/M8h7/up3l3DE05S97H8VNbPYi/fsvbz0qdAdxDPDu4n1p+fTR9j29AIu3aJBjktMVxhIHe7RYkpxet0gkTm2le+rnfTOapENaOXxP3XbyzHbOFewlSC/fyT2FjVU4lgd2+IbjniUMVVbtqaIT0Zfx0L4CnAG0M+wQZHiDQLM+mAHQECR5AsvUHjqbZwb726P8BeD/YKvSvgpwAAAAASUVORK5CYII="; const YOUTUBE = new SiteInfo( "YOUTUBE", "https://www.youtube.com/results?search_query=%s", "https://www.youtube.com/", YOUTUBE_ICO); //V2EX const V2EX_ICO = "data:image/png;base64,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"; const V2EX = new SiteInfo( "V2EX", "https://www.google.com/search?q=site:v2ex.com/t%20%s", "https://www.v2ex.com/", V2EX_ICO); // 直达 const ZHIDA_ICO = "data:image/png;base64,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"; const Zhida = new SiteInfo("直达", "%s", "https://www.baidu.com/", ZHIDA_ICO); //复制 const FUZHI_ICO = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAABXNJREFUeF7tnQGSFCEMRdmTqSdbPZl6Mi2s6dqdcXdC8tPkQ/+ustxyCZD8R6CBGV+anktH4OXS3sv5JgAuDoEAEAAXj8DF3VcGEAAXj8DF3VcGEABUEfjaWnttrfW/9fwfgR+3f/rVWut/4IctA/yBPbpOBR2ADgQEAhMA32+j/zoS5njaIeixCz1MAGj0hyT8ZxSGQADEg85m+S0yHTAB8FOLP4ipvhboELgeJgD6yr9DoCceAXcWYALgcFuLwTgA7rUAIwBx9/e2HNkjcU8DAmAtaKxpUgCspWeot9brsmtQuwqHuiuj7AgIgOyILlafAFhMsOzuCoDsiC5WnwBYTLDs7tICcLyndod1nv+x7Bnn+XQAjGxQZI+CHeqLnudTAaBtWxxF7/YtDQASHxf/qMEDAQUAEj9P/KOm0ZM8CgCsTuSHZ/8aR/fxrdi7dnddhW8aaPSfB+NIFhAA58W/vOaRtUA5ANbVrejrTXn0T+7AyOvyyDRQDoDVgZE0dnKsaavPOM+34u+a1l2Fb2FN7QCtVOd1DI0fan/nmQA4T+jPakYFRO0FwHzN71pEBUTtBYAAeIuApoD5NKAjGLVXBpivuaaA4phTNY+OYNReGaAYB1RA1F4ACAAtAisZQEcwaq8MUKl+aw0VELWnBGDkoKRYt7vmR07ttBPoUMyi2lHV1KKRgy/LV2tvBrWnywArXzAZOb59JBIVELWnA8ByaOqQDjRmjVgBYARVANwHyALKipdlT5cBrBtGgUE5zSSyGEQFRO3pALBuyUxTM9CQa7Td6kcFRO3pADg6tNJiELn3iAqI2tMCEBiAS5qgAqL2AqAYG1RA1F4ACIC3CFQsYorjX948OoJRe2WAYgRQAVF7ASAANAVUMoCOYNReGaBSfd0HKI4+QfPoCEbtlQGKIUAFRO0FgADQIrCSAXQEo/aUGUB3AscH5ZYAWE5VjthnbetO4AfR8W4vr3QM/Oiu7gQmALDq6D9c9wJv+WvVh9rTrQEsh1jTvwD4RBmL4Ecz3Qm8j4gVP2vAWPZ0GUB3Ai8OwOH+SotB3Ql8MjG7UhD7BH9C/9AUjtrTTQEnxJi6SlRA1F4AFOOBCojaCwABML7v/FGsUgksFqOieTR+qL0yQIXq79pEBUTtBYAA0BRQyQA6glF7ZYBK9XUptDj6BM2jIxi1VwYohgAVELWnB+Ds/3e47+NXPqiAqD0lALPvBHYIfrfW+gHU7AcVELWnA6DyODhypw8FBhUQtacDoPIYOHKnTwAYEfAeB1tEowG37L39teqzfm/5a/UHtafLANVXwqyAW4J6f48KiNrTAVA5BUS+588r+GN5VEDUng6A3qGKLFAx/3dfUQFRe0oAeqd6JviCDq9B+z7yq/YDUAFRe1oABrVbvhgqIGovAIoRQgVE7QXA4gA8Wy+5F7WRV6BUAovFqGgejd+znVO3nm6DhFVsRdCZ2kQBOHx5//oc/qCKAJiPRhYAKT0XAClhdFUiAFzh2q+wANhPU5dHAsAVrv0KC4D9NHV5JABc4dqvsADYT1OXRwLAFa79CguA/TR1eSQAXOHar7AA2E9Tl0fLA2Bd36q4a+9SoLDwyGcgItvzYZcijVkAhE+mwl6sYTjy6Sf3eT7qegSAylu8qL/s9ksAMJLG2APN2r/p02ckA/TgWdMAa4CZ+1VyTT0KgLJAPkrTR393IQpAt9VaIA+C6XP/0XUEAEGQA0CZ+GgGONwfeb3JCdVetVC8LqMZ4L0kHYTj611e99IqxZvjo2j9m0n6z1UfTbtzJhOAlCipkrkREABz403XmgCgk2RuhwTA3HjTtSYA6CSZ2yEBMDfedK0JADpJ5nZIAMyNN11rfwHN12OQr51tdAAAAABJRU5ErkJggg=="; const Fuzhi = new SiteInfo("复制", "%s", "https://www.baidu.com/", FUZHI_ICO); // 知乎 const Zhihu = new SiteInfo( "知乎", "https://www.zhihu.com/search?q=%s", "https://www.zhihu.com/", "https://static.zhihu.com/heifetz/favicon.ico", ); //fsou const FSOU = new SiteInfo( "FSOU", "https://fsoufsou.com/search?q=%s&tbn=all", "https://fsoufsou.com/", "https://fsoufsou.com/favicon.ico"); const Baidufanyi = new SiteInfo( "百度翻译", "https://fanyi.baidu.com/#auto/zh/%s", "https://fanyi.baidu.com/", "https://fanyi-cdn.cdn.bcebos.com/webStatic/translation/img/favicon/favicon.ico", ); const Baiduwangpan = new SiteInfo( "百度网盘", "https://pan.baidu.com/disk/home?#/search?key=%s", "https://pan.baidu.com/", "https://nd-static.bdstatic.com/m-static/v20-main/favicon-main.ico", ); const Baidubaike = new SiteInfo( "百度百科", "https://baike.baidu.com/search/word?pic=1&sug=1&word=%s", "https://baike.baidu.com/", "https://baike.baidu.com/favicon.ico", ); const Baiduzhidao = new SiteInfo( "百度知道", "https://zhidao.baidu.com/search?word=%s", "https://zhidao.baidu.com/", "https://www.baidu.com/favicon.ico?t=20171027", ); const Baiduxinwen = new SiteInfo( "百度新闻", "https://www.baidu.com/s?rtt=1&bsst=1&cl=2&tn=news&rsv_dl=ns_pc&word=%s", "https://news.baidu.com/", "https://www.baidu.com/favicon.ico", ); const Baiduwenku = new SiteInfo( "百度文库", "https://wenku.baidu.com/search?word=%s", "", "https://www.baidu.com/favicon.ico", ); const Baidumap = new SiteInfo( "百度地图", "https://map.baidu.com/search?querytype=s&wd=%s", "", "https://map.baidu.com/favicon.ico", ); const Baidutupian = new SiteInfo( "百度图片", "https://image.baidu.com/search/index?tn=baiduimage&ie=utf-8&word=%s", "", "https://www.baidu.com/favicon.ico", ); const Baiduxueshu = new SiteInfo( "百度学术", "https://xueshu.baidu.com/s?wd=%s", "", "https://www.baidu.com/favicon.ico", ); const Baidutieba = new SiteInfo( "贴吧", "https://tieba.baidu.com/f?kw=%s&ie=utf-8", "https://tieba.baidu.com/", "https://www.baidu.com/favicon.ico", ); const Googlefanyi = new SiteInfo( "谷歌翻译", "https://translate.google.com/?q=%s", "", "https://ssl.gstatic.com/translate/favicon.ico", ); const Googlemap = new SiteInfo( "谷歌地图", "https://www.google.com/maps/search/%s", "https://www.google.com/maps/", "https://s2.loli.net/2022/08/17/SloXZzf9nC6LPbq.png", ); const Googleearth = new SiteInfo( "谷歌地球", "https://earth.google.com/web/search/%s", "https://earth.google.com/web/", "https://s2.loli.net/2022/08/17/IOiPDl7YX3QnmsC.png", ); const Googlexueshu = new SiteInfo( "谷歌学术", "https://scholar.google.com/scholar?hl=zh-CN&q=%s", "", "https://s2.loli.net/2022/08/17/4BaC1Acu2ebXJR9.png", ); const Googlepic = new SiteInfo( "谷歌图片", "https://www.google.com/search?q=%s&tbm=isch", "https://www.google.com/imghp?hl=zh-CN", Google.icon, ); const Googlenews = new SiteInfo( "谷歌新闻", "https://news.google.com/search?q=%s&hl=zh-CN&gl=CN&ceid=CN:zh-Hans", "https://news.google.com/topstories?hl=zh-CN&gl=CN&ceid=CN:zh-Hans", "https://s2.loli.net/2022/08/17/RTdZQMD2Aw8eobn.png", ); const StackOverflow = new SiteInfo( "StackOverflow", "https://stackoverflow.com/search?q=%s", "", "https://s2.loli.net/2022/08/16/mgMHa8UTekYIdV4.png", ); const Taobao = new SiteInfo( "淘宝", "https://s.taobao.com/search?q=%s", "https://www.taobao.com/", "https://www.taobao.com/favicon.ico", ); const Jingdong = new SiteInfo( "京东", "https://search.jd.com/Search?keyword=%s&enc=utf-8", "https://www.jd.com/", "https://search.jd.com/favicon.ico", ); const Tianmao = new SiteInfo( "天猫", "https://list.tmall.com/search_product.htm?q=%s", "https://www.tmall.com/", "https://www.tmall.com/favicon.ico", ); const Maimai = new SiteInfo( "脉脉", "https://maimai.cn/web/search_center?type=gossip&query=%s&highlight=true", "https://maimai.cn/feed_list", "https://maimai.cn/favicon.ico", ); const Weibo = new SiteInfo( "微博", "https://s.weibo.com/weibo/%s", "https://weibo.com/", "https://s.weibo.com/favicon.ico", ); //=========================定义网站数据======================================= const defaultConf = { // // 基本配置 // showToolbar: true, // 显示划词工具条 showFrequentEngines: true, // 显示常用搜索引擎 showClassifiedEngines: true, // 显示分类搜索引擎 showPlaceholder: false, // 显示使用方式提示信息(如搜索框placeholder) enableOnInput: true, // 是否在input/textarea上启用划词和快捷键 autoCopyToClipboard: false, // 划词时自动复制到剪贴板(内容为文本格式) // // 常用搜索引擎列表 // 属性: // - name 搜索引擎名称 // - url 搜索引擎搜索url // - home 搜索引擎主页url // - icon 搜索引擎图标, base64编码 // - enable 是否启用 // frequentEngines: [ Baidu.callSiteInformation(), Google.callSiteInformation(), FSOU.callSiteInformation(false), Bing.callSiteInformation(), Baidufanyi.callSiteInformation(false), GitHub.callSiteInformation(), Zhihu.callSiteInformation(false), Googlenews.callSiteInformation(false), Bilibili.callSiteInformation(), Taobao.callSiteInformation(false), Jingdong.callSiteInformation(false), Tianmao.callSiteInformation(false), Baiduwangpan.callSiteInformation(false), Maimai.callSiteInformation(false), YOUTUBE.callSiteInformation(), V2EX.callSiteInformation(), Zhida.callSiteInformation(), Fuzhi.callSiteInformation() ], }; /////////////////////////////////////////////////////////////////// // css样式 /////////////////////////////////////////////////////////////////// const sheet = ` /* 注意: 为了避免网页style对该工具的影响, 所有样式均进行初始化并加入!important, js中设置style时也要注意将其设置为important, 否则不能生效. */ /* 划词工具条 */ .qs-toolbar { /* 初始化所有style, 避免被网页本身的style影响 */ // all: initial !important; margin: 0; position: absolute !important; display: flex !important; flex-direction: row; align-items: center; justify-items: center; gap: 8px; height: 50px !important; padding: 5px 4px !important; white-space: nowrap !important; border: 2px solid rgba(0, 196, 182, 0.9) !important; background-color: white !important; z-index: 10000 !important; border-radius: 15px; } .qs-toolbar-icon { // all: initial !important; display: block !important; margin: 0px !important; padding: 2px !important; width: 35px !important; height: 35px !important; // border: 1px solid #FFF !important; transition: all 0.3s ease; cursor: pointer !important; border-radius: 15px; } .qs-toolbar-icon:hover { // border: 1px solid #CCC !important; transform: scale(1.1, 1.1); } .engine-name { vertical-align: middle !important; // margin-left: 2px !important; font-size: 20px !important; font-family: arial,sans-serif !important; font-weight: 400 !important; color: #5F5F5F !important; height: 45px !important; width: 45px !important; border: 1px solid #262626 !important; cursor: pointer !important; display: flex; justify-content: center; align-items: center; background-color: white !important; transition: all 0.3s ease; padding: 2px !important; box-sizing: border-box; border-radius: 15px; outline: 1px solid rgba(0, 196, 182, 0.8) !important; } .engine-name:hover { outline: 3px solid #6DC5D1 !important; } `; /////////////////////////////////////////////////////////////////// // 全局变量 /////////////////////////////////////////////////////////////////// var shadowHost = null; var shadowRoot = null; var conf = await GM.getValue("qs-conf", defaultConf); var qsPageLock = false; // 是否在当前页面锁定快搜所有功能, 锁定之后仅响应解锁快捷键 var qsToolbar = null; // 快搜划词工具条 var qsMainBox = null; // 快搜主窗口 var qsSettingBox = null; // 快搜设置窗口 var selectionBak_qs = null; /////////////////////////////////////////////////////////////////// // 功能函数 /////////////////////////////////////////////////////////////////// // 获取可视窗口在文档(页面)中的绝对位置 function getWindowPosition() { return { top: window.scrollY, bottom: window.scrollY + window.innerHeight, left: window.scrollX, right: window.scrollX + window.innerWidth, }; } // 获取选中文本 function getSelection() { return window.getSelection().toString().trim(); } // 判断是否允许工具条 function isAllowToolbar(event) { var target = event.target; if (!conf.showToolbar || qsPageLock) { return false; } if ( !conf.enableOnInput && (target.tagName == "INPUT" || target.tagName == "TEXTAREA") ) { return false; } if ( (qsMainBox && qsMainBox.contains(target)) || (qsSettingBox && qsSettingBox.contains(target)) ) { return false; } return true; } // 获取搜索引擎主页url function getEngineHome(engine) { if (engine.home) { return engine.home; } else { var url = new URL(engine.url); return `${url.protocol}//${url.hostname}/`; } } // 打开url. // 当按下Cmd(Mac系统)/Ctrl(Windows/Linux系统), 则后台打开url. async function openUrl(url, event) { // console.log(`Quick Search: open url, url is ${url}`); if (!url) return; if (event.metaKey || event.ctrlKey) { await GM.openInTab(url, true); } else { await GM.openInTab(url, false); } } // 打开engine搜索结果或engine主页. function openEngine(engine, query, event) { // console.log(`Quick Search: open engine, engine is ${engine.url}, query is ${query}`); if (!engine) return; if (engine.name === "直达") { var Expression = /http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w- .\/?%&=]*)?/; var objExp = new RegExp(Expression); if (objExp.test(query) == false) { query = "https://" + query; } openUrl(query, event); return; } if (engine.name === "复制") { copyText(query); hideToolbar(); return; } if (query) { var url = engine.url.replace("%s", encodeURIComponent(query)); openUrl(url, event); } else { openUrl(getEngineHome(engine), event); } } // 点击搜索引擎. // 当按下Alt, 则忽略查询词打开引擎主页, 否则正常搜索. function openEngineOnClick(engine, query, event) { if (event.altKey) { openEngine(engine, null, event); } else { openEngine(engine, query, event); } } // 点击划词工具条搜索引擎. function openEngineOnClickToolbar(engine, event) { var query = getSelection(); if (!query) { query = selectionBak_qs; } openEngineOnClick(engine, query, event); } /////////////////////////////////////////////////////////////////// // 元素创建 与 元素事件响应 /////////////////////////////////////////////////////////////////// // 加载css样式 function loadSheet() { var css = document.createElement("style"); css.type = "text/css"; css.id = "qs-css"; css.textContent = sheet; shadowRoot.appendChild(css); } // // 划词工具条 // // 创建划词工具条 function createToolbar() { // 工具条container var toolbar = document.createElement("div"); toolbar.id = "qs-toolbar"; toolbar.className = "qs-toolbar"; toolbar.style.setProperty("display", "none", "important"); shadowRoot.appendChild(toolbar); // 常用搜索引擎按钮 conf.frequentEngines.forEach((engine, index) => { if (!engine.enable) return; // 此处return搭配forEach, 请勿改为其他形式循环 var ele = document.createElement("div"); ele.className = "engine-name"; var icon = document.createElement("img"); icon.id = "qs-toolbar-icon-" + index; icon.className = "qs-toolbar-icon"; icon.src = engine.icon; icon.alt = engine.name; icon.title = engine.name; // icon.style.cssText = "display: none !important"; icon.addEventListener( "click", function (e) { openEngineOnClickToolbar(engine, e); }, true, ); ele.appendChild(icon); toolbar.appendChild(ele); }); qsToolbar = toolbar; } // 划词工具条是否处于显示状态 function isToolbarVisual() { return qsToolbar && qsToolbar.style.display !== "none"; } // 显示划词工具条 function showToolbar(event) { ensureQuickSearchAlive(); if (!qsToolbar || isToolbarVisual()) { return; } var toolbar = qsToolbar; toolbar.style.setProperty("top", "-10000px", "important"); toolbar.style.setProperty("left", "-10000px", "important"); toolbar.style.setProperty("display", "flex", "important"); var toolbarClientRect = toolbar.getBoundingClientRect(); var toolbarWidth = toolbarClientRect.right - toolbarClientRect.left; var toolbarHeight = toolbarClientRect.bottom - toolbarClientRect.top; var toolbarNewTop = event.pageY - 100; var toolbarNewLeft = event.pageX - toolbarWidth / 2; var windowPos = getWindowPosition(); if (toolbarNewTop - 10 < windowPos.top) { toolbarNewTop = event.pageY + toolbarHeight + 15; } if (toolbarNewLeft < windowPos.left) { toolbarNewLeft = windowPos.left; } else if (toolbarNewLeft + toolbarWidth > windowPos.right) { toolbarNewLeft = windowPos.right - toolbarWidth; } toolbar.style.setProperty("top", toolbarNewTop + "px", "important"); toolbar.style.setProperty("left", toolbarNewLeft + "px", "important"); } // 隐藏划词工具条 function hideToolbar() { if (qsToolbar) { qsToolbar.style.setProperty("display", "none", "important"); } } //复制 var copyText = function (button, content, success) { if (!button) { return; } if (typeof content == 'function') { success = content; content = null; } success = success || function () { }; // 是否降级使用 var isFallback = !navigator.clipboard; if (typeof button == 'string' && !content) { if (content === false) { isFallback = true; } content = button; button = null; } var eleTextarea = document.querySelector('#tempTextarea'); if (!eleTextarea && isFallback) { eleTextarea = document.createElement('textarea'); eleTextarea.style.width = 0; eleTextarea.style.position = 'fixed'; eleTextarea.style.left = '-999px'; eleTextarea.style.top = '10px'; eleTextarea.setAttribute('readonly', 'readonly'); document.body.appendChild(eleTextarea); } var funCopy = function (text, callback) { callback = callback || function () { }; if (!isFallback) { navigator.clipboard.writeText(text).then(function () { callback(); // 成功回调 success(text); }, function () { // 禁止写入剪切板后使用兜底方法 copyText(text, false); callback(); // 成功回调 success(text); }); return; } eleTextarea.value = text; eleTextarea.select(); document.execCommand('copy', true); callback(); // 成功回调 success(text); }; funCopy(content); return; }; // // 创建以上所有东东 // function initQuickSearch() { selectionBak_qs = null; shadowHost = document.createElement("div"); document.body.appendChild(shadowHost); shadowRoot = shadowHost.attachShadow({mode: 'closed'}); loadSheet(); if (conf.showToolbar) { createToolbar(); } } // 百度等网页会在不刷新页面的情况下改变网页内容, 导致quick search除了js脚本之外的东东全部没了. // 此函数用于确保quick search处于可用状态, 需在toolbar或mainbox等窗口每次显示时调用. function ensureQuickSearchAlive() { if (!shadowHost || !shadowRoot) { initQuickSearch(); } else { var css = shadowRoot.getElementById("qs-css"); if (!css) { initQuickSearch(); } } } initQuickSearch(); /////////////////////////////////////////////////////////////////// // 全局事件响应 // // 我们将全局事件绑定在捕获阶段执行, 避免事件响应被网页自带的脚本拦截掉. /////////////////////////////////////////////////////////////////// // // top window和iframe共用的事件处理逻辑 // document.addEventListener( "mousedown", function (e) { var target = e.target; // 隐藏工具条 if (isToolbarVisual() && !qsToolbar.contains(target) && !shadowHost.contains(target)) { selectionBak_qs = null; hideToolbar(); } }, true, ); document.addEventListener( "mouseup", function (e) { var target = e.target; var selection = getSelection(); if (!qsToolbar.contains(target) && !shadowHost.contains(target)) { selectionBak_qs = selection; } // 显示/隐藏工具条 if (isAllowToolbar(e)) { if (selection && !isToolbarVisual()) { showToolbar(e); } if (!selection && isToolbarVisual() && !qsToolbar.contains(target) && !shadowHost.contains(target)) { selectionBak_qs = null; hideToolbar(); } } // 划词时自动复制文本到剪贴板 if ( conf.autoCopyToClipboard && target.tagName !== "INPUT" && target.tagName !== "TEXTAREA" && !qsMainBox.contains(target) && !qsSettingBox.contains(target) ) { if (selection) { GM.setClipboard(selection, "text/plain"); } } }, true, ); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址