您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Opens search results in new tab when you middle click
- // ==UserScript==
- // @name Google - Middle Click Search
- // @namespace https://greasyfork.org/users/649
- // @version 1.2.1
- // @description Opens search results in new tab when you middle click
- // @author Adrien Pyke
- // @include /^https?:\/\/www\.google\.[a-zA-Z]+\/?(?:\?.*)?$/
- // @include /^https?:\/\/www\.google\.[a-zA-Z]+\/search\/?\?.*$/
- // @require https://cdn.jsdelivr.net/gh/fuzetsu/userscripts@ec863aa92cea78a20431f92e80ac0e93262136df/wait-for-elements/wait-for-elements.js
- // @grant GM_openInTab
- // ==/UserScript==
- (() => {
- 'use strict';
- const setQueryParam = function (key, value, url = location.href) {
- const regex = new RegExp(`([?&])${key}=.*?(&|#|$)(.*)`, 'giu');
- const hasValue =
- typeof value !== 'undefined' && value !== null && value !== '';
- if (regex.test(url)) {
- if (hasValue) {
- return url.replace(regex, `$1${key}=${value}$2$3`);
- } else {
- const [path, hash] = url.split('#');
- url = path.replace(regex, '$1$3').replace(/(&|\?)$/u, '');
- if (hash) url += `#${hash[1]}`;
- return url;
- }
- } else if (hasValue) {
- const separator = url.includes('?') ? '&' : '?';
- const [path, hash] = url.split('#');
- url = `${path + separator + key}=${value}`;
- if (hash) url += `#${hash[1]}`;
- return url;
- } else return url;
- };
- const getUrl = function (value) {
- if (
- window.location.href.match(
- /^https?:\/\/www\.google\.[a-zA-Z]+\/search\/?\?.*$/u
- )
- ) {
- return setQueryParam('q', encodeURIComponent(value));
- } else {
- return `${location.protocol}//${
- location.host
- }/search?q=${encodeURIComponent(value)}`;
- }
- };
- waitForElems({
- sel: '#_fZl',
- onmatch(btn) {
- const input = document.querySelector('#lst-ib');
- btn.onmousedown = e => {
- if (e.button === 1) {
- e.preventDefault();
- }
- };
- btn.onclick = e => {
- if (e.button === 1 && input.value.trim()) {
- e.preventDefault();
- e.stopImmediatePropagation();
- const url = getUrl(input.value);
- GM_openInTab(url, true);
- return false;
- }
- };
- btn.onauxclick = btn.onclick;
- }
- });
- waitForElems({
- sel: '.sbsb_b li .sbqs_c, .sbsb_b li .sbpqs_d',
- onmatch(elem) {
- elem.onclick = e => {
- if (e.button === 1) {
- e.preventDefault();
- e.stopImmediatePropagation();
- const text = elem.classList.contains('sbpqs_d')
- ? elem.querySelector('span').textContent
- : elem.textContent;
- const url = getUrl(text);
- GM_openInTab(url, true);
- return false;
- }
- };
- elem.onauxclick = elem.onclick;
- }
- });
- })();