MediaWiki:Common.js: различия между версиями
Pok (обсуждение | вклад) мНет описания правки |
Pok (обсуждение | вклад) мНет описания правки |
||
| Строка 592: | Строка 592: | ||
if (!hash) return; // Выход, если якорь пустой | if (!hash) return; // Выход, если якорь пустой | ||
// | // Проверяем, есть ли элемент с таким ID среди категорий | ||
var targetCategory = document.getElementById(hash); | |||
if (targetCategory) { | |||
var categoryIndex = Array.from(categories).indexOf(targetCategory); | |||
if (categoryIndex !== -1) { | |||
// Открываем соответствующую категорию | |||
switchCategory(categoryIndex); | |||
targetCategory.scrollIntoView(); // Прокрутка к категории | |||
return; // Выход, т.к. нашли категорию | |||
} | |||
} | |||
// Если якорь не соответствует категории, ищем среди пунктов меню | |||
var targetMenuItem = document.getElementById(hash); | var targetMenuItem = document.getElementById(hash); | ||
if (targetMenuItem) { | if (targetMenuItem) { | ||
// | // Получаем меню, к которому принадлежит пункт | ||
var menu = targetMenuItem.closest('.navigation__menu-item'); | var menu = targetMenuItem.closest('.navigation__menu-item'); | ||
if (menu) { | if (menu) { | ||
var categoryIndex = Array.from(menus).indexOf(menu); | var categoryIndex = Array.from(menus).indexOf(menu); | ||
if (categoryIndex !== -1) { | if (categoryIndex !== -1) { | ||
// Открываем категорию, содержащую пункт | |||
switchCategory(categoryIndex); | switchCategory(categoryIndex); | ||
switchContent(targetMenuItem); // Открытие пункта меню | switchContent(targetMenuItem); // Открытие пункта меню | ||
targetMenuItem.scrollIntoView(); // Прокрутка к пункту | targetMenuItem.scrollIntoView(); // Прокрутка к пункту | ||
} | } | ||
} | } | ||