Веб-разработка
- 1 ответ
 - 0 вопросов
 
    1
    Вклад в тег
    
      
      
    
  
  
// ==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 });
})();