Google Images Fullscreen

Надежно открывает большие картинки в Google Images на весь экран при клике.

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

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

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

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

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

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

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

Advertisement:

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

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

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

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

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

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

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

Advertisement:

// ==UserScript==
// @name         Google Images Fullscreen
// @namespace    http://tampermonkey.net/
// @version      2.1
// @description  Надежно открывает большие картинки в Google Images на весь экран при клике.
// @author       You
// @match        *://*.google.com/*
// @match        *://*.google.ru/*
// @match        *://*.google.by/*
// @match        *://*.google.kz/*
// @match        *://*.google.com.ua/*
// @grant        none
// @license MIT
// ==/UserScript==

(function() {
    'use strict';

    document.addEventListener('click', function(e) {
        // 1. Если уже в полноэкранном режиме — выходим
        if (document.fullscreenElement) {
            e.preventDefault();
            e.stopPropagation();
            document.exitFullscreen();
            return;
        }

        // Проверяем, что находимся в разделе картинок
        const urlParams = new URLSearchParams(window.location.search);
        if (urlParams.get('tbm') !== 'isch' && urlParams.get('udm') !== '2') return;

        // 2. ПРОБИВАЕМ СЛОИ: берем все элементы, которые находятся ровно под курсором
        const elementsUnderCursor = document.elementsFromPoint(e.clientX, e.clientY);
        
        let targetImg = null;
        for (let el of elementsUnderCursor) {
            // Ищем первую картинку в стопке элементов
            if (el.tagName && el.tagName.toLowerCase() === 'img') {
                targetImg = el;
                break;
            }
        }

        if (!targetImg) return;

        // 3. Проверяем, что картинка большая (игнорируем миниатюры в сетке)
        if (targetImg.clientWidth > 200 && targetImg.clientHeight > 200) {
            e.preventDefault();
            e.stopPropagation();

            // 4. Запоминаем старые стили, чтобы вернуть их после закрытия
            const originalObjectFit = targetImg.style.objectFit;
            const originalBackground = targetImg.style.background;

            // Задаем стили, чтобы в полноэкранном режиме картинка не искажалась
            targetImg.style.objectFit = 'contain';
            targetImg.style.background = 'black';

            // Слушатель для возврата стилей при выходе из фуллскрина
            const onFullscreenChange = () => {
                if (!document.fullscreenElement) {
                    targetImg.style.objectFit = originalObjectFit;
                    targetImg.style.background = originalBackground;
                    document.removeEventListener('fullscreenchange', onFullscreenChange);
                }
            };
            document.addEventListener('fullscreenchange', onFullscreenChange);

            // 5. Разворачиваем на весь экран
            if (targetImg.requestFullscreen) {
                targetImg.requestFullscreen();
            } else if (targetImg.webkitRequestFullscreen) {
                targetImg.webkitRequestFullscreen(); // Safari
            }
        }
    }, true); 
})();