Задать вопрос
Пользователь пока ничего не рассказал о себе

Наибольший вклад в теги

Все теги (2)

Лучшие ответы пользователя

Все ответы (1)
  • Почему клик средней клавишей мыши по карточке товара на сайте Ozon в Firefox перемещает фокус на открываемую вкладку?

    @Kazaams
    На сайте Ozon действительно наблюдается нестандартное поведение при нажатии средней кнопкой мыши (СКМ) по карточке товара. Вместо стандартного открытия ссылки в новой вкладке фоном, сайт переводит фокус на новую вкладку, что доставляет неудобства, особенно если вы хотите продолжить просмотр товаров на текущей странице.

    Это поведение замечено в браузерах Firefox и Microsoft Edge, как вы упомянули, но аналогично проявляется и в Google Chrome. Оно связано с логикой обработки кликов на сайте Ozon, которая перехватывает событие СКМ и открывает новую вкладку с переводом фокуса.

    Решение: Можно использовать пользовательский скрипт через расширение Tampermonkey для исправления этого поведения. Скрипт предотвращает нестандартное открытие новой вкладки при нажатии СКМ, не портя работу левой кнопки мыши (ЛКМ). Скрипт протестирован 01.02.2025 в Google Chrome с Tampermonkey, но должен также работать в Firefox, Edge и других браузерах, поддерживающих Tampermonkey.

    Проблемы, которые решает скрипт:
    1. В списке товаров: теперь ссылка через СКМ открывается в новой вкладке фоном (вместо открытия со сменой фокуса на открытую вкладку).
    2. В "Рекомендуем также" в карточке товара: теперь ссылка через СКМ открывается в новой вкладке фоном (вместо открытия в текущей вкладке с перекрытием открытого товара).
    Как установить:
    1) Установите расширение Tampermonkey в браузере:
    Tampermonkey для Chrome
    Tampermonkey для Firefox
    Tampermonkey для Microsoft Edge
    2) Создайте новый скрипт в Tampermonkey и вставьте следующий код:
    // ==UserScript==
    // @name         Ozon Middle Click Fix (от 01.02.2025)
    // @namespace    http://tampermonkey.net/
    // @version      1.2
    // @description  Восстанавливает стандартное поведение средней кнопки мыши на ozon.ru, включая панель "Рекомендуем также".
    // @author       Вы
    // @match        *://*.ozon.ru/*
    // @grant        none
    // ==/UserScript==
    
    (function() {
        'use strict';
    
        // Функция для клонирования ссылок (удаление обработчиков событий)
        function cloneLinks(container) {
            const links = container.querySelectorAll('a');
            links.forEach(link => {
                const newLink = link.cloneNode(true); // Создаём клон ссылки
                link.replaceWith(newLink); // Заменяем старую ссылку клоном
            });
        }
    
        // Прерываем обработку событий для средней кнопки мыши
        document.addEventListener('mousedown', event => {
            if (event.button === 1) { // Средний клик
                event.stopImmediatePropagation(); // Блокируем обработчики других скриптов
            }
        }, true);
    
        // Гарантируем открытие ссылки в новой вкладке
        document.addEventListener('mousedown', event => {
            if (event.button === 1) { // Средний клик
                const link = event.target.closest('a');
                if (link && link.href) {
                    window.open(link.href, '_blank'); // Открываем ссылку в новой вкладке
                    event.preventDefault(); // Предотвращаем любое другое поведение
                }
            }
        }, true);
    
        // Клонируем ссылки на странице при загрузке
        cloneLinks(document);
    
        // Настраиваем наблюдатель за изменениями в DOM
        const observer = new MutationObserver(mutations => {
            mutations.forEach(mutation => {
                if (mutation.type === 'childList') {
                    mutation.addedNodes.forEach(node => {
                        if (node.nodeType === 1) { // Проверяем, что это элемент
                            cloneLinks(node); // Клонируем ссылки в добавленных элементах
                        }
                    });
                }
            });
        });
    
        // Наблюдаем за изменениями в теле документа
        observer.observe(document.body, { childList: true, subtree: true });
    })();

    Этот скрипт устраняет обе проблемы: ссылки в списке товаров и в панели "Рекомендуем также" теперь открываются в новой вкладке фоном, обеспечивая ожидаемое поведение при клике средней кнопкой мыши.
    Ответ написан
    3 комментария