slash search bar focus

Focus search bar on pressing SLASH (/) or BACKSLASH (\) on amazon.de, bing.com, userscript.zone, github, aliexpress, hornbach, readly, greasyfork, ebay, temu

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name         slash search bar focus
// @namespace    guebosch
// @version      2025-03-06
// @description  Focus search bar on pressing SLASH (/) or BACKSLASH (\) on amazon.de, bing.com, userscript.zone, github, aliexpress, hornbach, readly, greasyfork, ebay, temu
// @author       guebosch
// @match        https://www.bing.com/search*
// @match        https://www.userscript.zone/search*
// @match        https://github.com/*
// @match        https://go.readly.com/*
// @match        https://greasyfork.org/en/scripts*
// @match        https://www.hornbach.at/*
// @match        https://*.aliexpress.com/*
// @match        https://*.temu.com/*
// @match        https://www.amazon.de/*
// @match        https://www.google.com/search?q=*
// @match        https://www.google.com/search?newwindow=*
// @match        https://www.ebay.at/sch/*
// @match        https://www.ebay.de/sch/*
// @match        https://www.reddit.com/*
// @match        https://www.ebay.com/sch/*
// @match        https://piratehaven.xyz/search.php?*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=bing.com
// @grant        none
// ==/UserScript==

//debugger;

// Note: google seems to work out of the box. somethimes. Not always on the News Page.

(function() {
    const hostname = window.location.hostname;
    var searchField;
    window.addEventListener("keypress", e => {
        if (['TEXTAREA', 'INPUT'].includes(e.target.nodeName)) return;
        if (e.key !== "/" && e.key !== "\\") return;

        if (['www.bing.com', 'www.hornbach.at'].includes(hostname)) {
            searchField = document.querySelector('textarea[type="search"], input[type="search"], input[name="search"], input[placeholder*="Search"]');
        }
        else if (['www.userscript.zone','piratehaven.xyz'].includes(hostname)) {
            searchField = document.querySelector('#search');
        }
        else if (['github.com'].includes(hostname)) {
            searchField = document.querySelector('#js-issues-search');
        }
        else if (['de.aliexpress.com','en.aliexpress.com','www.aliexpress.com'].includes(hostname)) {
            searchField = document.querySelector('#search-words');
        }
        else if (['www.amazon.de'].includes(hostname)) {
            searchField = document.querySelector('#twotabsearchtextbox');
        }
        else if (['go.readly.com'].includes(hostname)) {
            searchField = document.querySelector('#content-gate-input');
        }
        else if (['greasyfork.org'].includes(hostname)) {
            searchField = document.querySelector('input[type="search"][name="q"]');
        }
        else if (['reddit.com'].includes(hostname)) {
            searchField = document.querySelector('input[type="text"][name="q"]');
        }
        else if (['www.ebay.at','www.ebay.de','www.ebay.com'].includes(hostname)) {
            searchField = document.querySelector('#gh-ac');
        }
        else if (['www.google.com'].includes(hostname)) {
            searchField = document.querySelector('#textarea[name="q"], textarea[id="q"]');
        }
        else if (['www.temu.com'].includes(hostname)) {
            searchField = document.querySelector('input[id="searchInput"]');
        }
        if (!searchField) return;
        window.scrollTo(0, 0);  // Scroll to the top
        searchField.focus();
        // move cursor to the right
        searchField.setSelectionRange(searchField.value.length, searchField.value.length);
        e.preventDefault();
    });
})();