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

мНет описания правки
мНет описания правки
Строка 486: Строка 486:
}
}


assignIds(); // Вызов функции для присвоения ID
// Вызов функции для присвоения ID
assignIds();


// Удаление класса active у всех переданных элементов
// Удаление класса active у всех переданных элементов
Строка 569: Строка 570:


// Функция для обработки якорей
// Функция для обработки якорей
function handleAnchorChange() {
function handleAnchorChange() {
    var anchor = window.location.hash.substring(1);
var anchor = window.location.hash.substring(1); // Получаем текущий хеш без символа #
    var decodedAnchor = decodeURIComponent(anchor);
var decodedAnchor = decodeURIComponent(anchor); // Декодируем хеш
    console.log("Current anchor:", decodedAnchor);
var found = false;
    var found = false;


    for (var i = 0; i < categories.length; i++) {
// Проверка категорий
        console.log("Checking category ID:", categories[i].id);
for (var i = 0; i < categories.length; i++) {
        if (categories[i].id === decodedAnchor) {
if (categories[i].id === decodedAnchor) { // Сравниваем с декодированным значением
            switchCategory(i);
switchCategory(i); // Открываем категорию
            found = true;
found = true;
            break;
break;
        }
}
    }
}


    if (!found) {
// Проверка пунктов меню, если якорь не найден в категориях
        for (var i = 0; i < menuItems.length; i++) {
if (!found) {
            console.log("Checking menu item ID:", menuItems[i].id);
for (var i = 0; i < menuItems.length; i++) {
            if (menuItems[i].id === decodedAnchor) {
if (menuItems[i].id === decodedAnchor) { // Сравниваем с декодированным значением
                var categoryIndex = Array.prototype.indexOf.call(categories, menuItems[i].closest('.navigation__menu-item').previousElementSibling);
// Найти индекс категории, к которой принадлежит пункт меню
                if (categoryIndex !== -1) {
var categoryIndex = Array.prototype.indexOf.call(categories, menuItems[i].closest('.navigation__menu-item').previousElementSibling);
                    switchCategory(categoryIndex);
if (categoryIndex !== -1) {
                    switchContent(menuItems[i]);
switchCategory(categoryIndex); // Открываем категорию
                }
switchContent(menuItems[i]);   // Открываем пункт меню
                found = true;
}
                break;
found = true;
            }
break;
        }
}
    }
}
}


    if (!found) {
// Если якорь не найден, открываем первую категорию
        switchCategory(0);
if (!found) {
    }
switchCategory(0);
}
} else {
// Если якорь был найден, повторно переключаем контент
switchContent(document.getElementById(decodedAnchor));
}
}


// Проверяем якорь при загрузке страницы
// Проверяем якорь при загрузке страницы