Middle clicking the YouTube search or suggestions opens r###lts in a new tab
// ==UserScript== // @name Youtube Middle Click Search (Updated) // @namespace https://greasyfork.org/users/649 // @version 3.0 // @description Middle clicking the YouTube search or suggestions opens r###lts in a new tab // @author flowscript // @match *://www.youtube.com/* // @grant GM_openInTab // @license MIT // ==/UserScript== (function() { 'use strict'; const SEL_SEARCH_BTN = '.ytSearchboxComponentSearchButton'; const SEL_SUGGESTION = '.ytSuggestionComponentSuggestion'; const SEL_CLEAR_BTN = '.ytSearchboxComponentClearButton'; const SEL_INPUT = 'input.ytSearchboxComponentInput'; // Convert user’s query into something like "foo+bar" function encodeURIWithPlus(str) { return encodeURIComponent(str).replace(/%20/g, '+'); } function isSearchButton(el) { return el.closest?.(SEL_SEARCH_BTN); } function getSuggestionEl(el) { return el.closest?.(SEL_SUGGESTION); } function isClearButton(el) { return el.closest?.(SEL_CLEAR_BTN); } function getSearchInputValue() { const input = document.querySelector(SEL_INPUT); return input?.value.trim() || ''; } function getSuggestionText(suggestionEl) { const textEl = suggestionEl.querySelector('.ytSuggestionComponentLeftContainer span'); return textEl?.textContent.trim() || ''; } // Open query in new tab function openInNewTab(query) { if (!query) return; const url = `${location.origin}/r###lts?search_query=${encodeURIWithPlus(query)}`; GM_openInTab(url, true); } // Open query in current tab function openInSameTab(query) { if (!query) return; const url = `${location.origin}/r###lts?search_query=${encodeURIWithPlus(query)}`; window.location.href = url; } /** * 1) Intercept mousedown on button=1 (middle-click), * open r###lts in new tab immediately, then block normal click. */ document.addEventListener( 'mousedown', (e) => { if (e.button !== 1) return; // only middle-click const target = e.target; // If it’s the main search button if (isSearchButton(target)) { e.preventDefault(); e.stopPropagation(); e.stopImmediatePropagation(); openInNewTab(getSearchInputValue()); return; } // If it’s a suggestion const suggestionEl = getSuggestionEl(target); if (suggestionEl && !isClearButton(target)) { e.preventDefault(); e.stopPropagation(); e.stopImmediatePropagation(); openInNewTab(getSuggestionText(suggestionEl)); } }, true ); /** * 2) Intercept normal left-click (button=0), * open r###lts in same tab, block YouTube’s single-page script. */ document.addEventListener( 'click', (e) => { if (e.button !== 0) return; // only left-click const target = e.target; // If it’s the main search button if (isSearchButton(target)) { e.preventDefault(); e.stopPropagation(); e.stopImmediatePropagation(); openInSameTab(getSearchInputValue()); return; } // If it’s a suggestion const suggestionEl = getSuggestionEl(target); if (suggestionEl && !isClearButton(target)) { e.preventDefault(); e.stopPropagation(); e.stopImmediatePropagation(); openInSameTab(getSuggestionText(suggestionEl)); } }, true ); })();