MediaWiki:Common.js: различия между версиями

мНет описания правки
мНет описания правки
Строка 592: Строка 592:
if (!hash) return; // Выход, если якорь пустой
if (!hash) return; // Выход, если якорь пустой


// Попытка найти пункт меню или категорию с соответствующим ID
// Проверяем, есть ли элемент с таким 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(); // Прокрутка к пункту
}
}
} else {
// Поиск категории по ID
var targetCategory = document.getElementById(hash);
if (targetCategory) {
var categoryIndex = Array.from(categories).indexOf(targetCategory);
if (categoryIndex !== -1) {
switchCategory(categoryIndex); // Открытие категории
targetCategory.scrollIntoView(); // Прокрутка к категории
}
}
}
}