На сайте 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 });
})();
Этот скрипт устраняет обе проблемы: ссылки в списке товаров и в панели "Рекомендуем также" теперь открываются в новой вкладке фоном, обеспечивая ожидаемое поведение при клике средней кнопкой мыши.