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

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


// Функция для обработки якорей
// Функция для обработки якорей
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);
var found = false;
    console.log("Current anchor:", decodedAnchor);
    var found = false;


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


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


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


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