您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds a "Maps" link to Google Search navigation, allowing users to directly open their search query in Google Maps.
// ==UserScript== // @name Add Google Maps Link to Google Search Navigation // @namespace http://tampermonkey.net/ // @version 0.1 // @description Adds a "Maps" link to Google Search navigation, allowing users to directly open their search query in Google Maps. // @author Nieme // @include https://www.google.*/search* // @grant none // @license GPLv2 // @run-at document-idle // ==/UserScript== (function() { 'use strict'; const translations = { en: 'Maps', de: 'Maps', fr: 'Maps', es: 'Mapa', it: 'Mappa', nl: 'Kaarten', pt: 'Mapa', ru: 'Карты', ja: '地図', ko: '지도', zh: '地图' }; function getLanguage() { const urlParams = new URLSearchParams(window.location.search); const langParam = urlParams.get('hl'); if (langParam) { return langParam.split('-')[0]; } return document.documentElement.lang || 'en'; } function addMapLinkToNavigation() { const navigationContainer = document.querySelector("div[role='list']"); if (!navigationContainer) { console.log("Userscript Google Maps Error: Navigation container not found. Contact me on Discord: Nieme"); return; } if (navigationContainer.querySelector(".custom-map-link")) { console.log("Userscript Google Maps Error: Map link already added. Contact me on Discord: Nieme"); return; } const queryElement = document.querySelector("input[name='q']"); if (!queryElement || !queryElement.value) { console.log("Userscript Google Maps Error: Query element not found. Contact me on Discord: Nieme"); return; } const query = queryElement.value; const currentTLD = window.location.hostname.split('.').slice(-1)[0]; const mapsDomain = `https://www.google.${currentTLD}/maps/search/?api=1&query=${encodeURIComponent(query)}`; const language = getLanguage(); const linkText = translations[language] || translations['en']; const newListItem = document.createElement('div'); newListItem.setAttribute('role', 'listitem'); const newLink = document.createElement('a'); newLink.href = mapsDomain; newLink.className = 'LatpMc nPDzT T3FoJb custom-map-link'; newLink.setAttribute('role', 'link'); newLink.innerHTML = `<div jsname="bVqjv" class="YmvwI">${linkText}</div>`; newListItem.appendChild(newLink); // Finde das "Videos" Listenelement, damit wir den neuen Link dahinter einfügen können const videosLink = navigationContainer.querySelector("a[href*='tbm=vid']"); if (videosLink && videosLink.parentElement) { videosLink.parentElement.insertAdjacentElement('afterend', newListItem); } else { // Fallback: Falls "Videos" nicht gefunden wird, füge den Link am Ende hinzu navigationContainer.appendChild(newListItem); } } const observer = new MutationObserver(() => { addMapLinkToNavigation(); }); observer.observe(document.body, { childList: true, subtree: true }); window.addEventListener('load', () => { setTimeout(() => { addMapLinkToNavigation(); }, 1000); }); })();