Открыть меню
Переключить меню настроек
Открыть персональное меню
Вы не представились системе
Ваш IP-адрес будет виден всем, если вы внесёте какие-либо изменения.

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

Страница интерфейса MediaWiki
Нет описания правки
Нет описания правки
Строка 1: Строка 1:
/* Размещённый здесь код JavaScript будет загружаться пользователям при обращении к каждой странице */
/**
/**
  * Автоматически разворачивает сворачиваемый блок (.collapsible-block),
  * Этот скрипт автоматически разворачивает сворачиваемый блок (.collapsible-block),
  * если пользователь переходит на страницу по ссылке с якорем (#).
  * если пользователь переходит на страницу по ссылке с якорем (#).
* Версия 2.0 - Использует прямое изменение класса для большей надёжности.
  */
  */
mw.hook('wikipage.content').add(function($content) {
mw.hook('wikipage.content').add(function($content) {
     // Получаем якорь из URL
     // Получаем якорь из URL (например, "Уровень_1"), если он есть
     var hash = window.location.hash.substring(1);
     var hash = window.location.hash.substring(1);
     console.log(hash);
     if (!hash) {
        return; // Выходим, если якоря нет
    }


     if (hash) {
     // Находим на странице элемент с таким ID (это наш скрытый заголовок)
        // Находим элемент-якорь на странице
    var $targetAnchor = $content.find('#' + $.escapeSelector(hash));
        var $targetAnchor = $content.find('#' + $.escapeSelector(hash));
    if (!$targetAnchor.length) {
        return; // Выходим, если якорь не найден
    }


        if ($targetAnchor.length) {
    // Находим блок для раскрытия.
            // Находим ПЕРВЫЙ СЛЕДУЮЩИЙ блок с классом .collapsible-block
    // Логика: ищем родителя нашего якоря (.visually-hidden)
            var $collapsibleBlock = $targetAnchor.nextAll('.collapsible-block:first');
    // и берём СЛЕДУЮЩИЙ за ним элемент .collapsible-block.
    var $collapsibleBlock = $targetAnchor.closest('.visually-hidden').next('.collapsible-block');


            if ($collapsibleBlock.length) {
    // Если блок найден...
                // Находим его заголовок и симулируем клик для раскрытия
    if ($collapsibleBlock.length) {
                var $header = $collapsibleBlock.find('.collapsible-header');
        // Находим внутри него сам сворачиваемый контент
                $header.trigger('click');
        var $collapsibleContent = $collapsibleBlock.find('.mw-collapsible');
             }
       
        // Прямым образом удаляем класс, который его скрывает.
        // Это надёжнее, чем симулировать клик.
        if ($collapsibleContent.hasClass('mw-collapsed')) {
            $collapsibleContent.removeClass('mw-collapsed');
              
            // Также обновляем атрибут доступности для скринридеров
            $collapsibleContent.attr('aria-expanded', 'true');
         }
         }
     }
     }
});
});

Версия от 16:27, 12 июля 2025

/**
 * Этот скрипт автоматически разворачивает сворачиваемый блок (.collapsible-block),
 * если пользователь переходит на страницу по ссылке с якорем (#).
 * Версия 2.0 - Использует прямое изменение класса для большей надёжности.
 */
mw.hook('wikipage.content').add(function($content) {
    // Получаем якорь из URL (например, "Уровень_1"), если он есть
    var hash = window.location.hash.substring(1);
    if (!hash) {
        return; // Выходим, если якоря нет
    }

    // Находим на странице элемент с таким ID (это наш скрытый заголовок)
    var $targetAnchor = $content.find('#' + $.escapeSelector(hash));
    if (!$targetAnchor.length) {
        return; // Выходим, если якорь не найден
    }

    // Находим блок для раскрытия.
    // Логика: ищем родителя нашего якоря (.visually-hidden)
    // и берём СЛЕДУЮЩИЙ за ним элемент .collapsible-block.
    var $collapsibleBlock = $targetAnchor.closest('.visually-hidden').next('.collapsible-block');

    // Если блок найден...
    if ($collapsibleBlock.length) {
        // Находим внутри него сам сворачиваемый контент
        var $collapsibleContent = $collapsibleBlock.find('.mw-collapsible');
        
        // Прямым образом удаляем класс, который его скрывает.
        // Это надёжнее, чем симулировать клик.
        if ($collapsibleContent.hasClass('mw-collapsed')) {
            $collapsibleContent.removeClass('mw-collapsed');
            
            // Также обновляем атрибут доступности для скринридеров
            $collapsibleContent.attr('aria-expanded', 'true');
        }
    }
});