Дополнительные действия
Gardolir (обсуждение | вклад) Нет описания правки |
Gardolir (обсуждение | вклад) Нет описания правки |
||
| Строка 1: | Строка 1: | ||
/** | jQuery(function($) { | ||
/** | |||
* Функция, которая находит якорь в URL, ищет соответствующий | |||
* сворачиваемый блок и раскрывает его. | |||
*/ | |||
function expandSectionFromHash() { | |||
// Получаем якорь из URL (например, "Уровень_5") | |||
var hash = window.location.hash.substring(1); | |||
if (!hash) { | |||
return; // Выходим, если якоря нет | |||
} | |||
// Декодируем якорь на случай, если он содержит кириллицу | |||
var decodedHash = decodeURIComponent(hash); | |||
// Ищем элемент-якорь на странице | |||
var $targetAnchor = $('#' + $.escapeSelector(decodedHash)); | |||
if (!$targetAnchor.length) { | |||
return; // Выходим, если якорь не найден | |||
} | |||
// Находим блок для раскрытия (родитель якоря, а затем следующий блок) | |||
var $collapsibleBlock = $targetAnchor.closest('.visually-hidden').next('.collapsible-block'); | |||
if ($collapsibleBlock.length) { | |||
// Находим внутри него сам сворачиваемый контент | |||
var $collapsibleContent = $collapsibleBlock.find('.mw-collapsible'); | |||
// | // Если блок свёрнут, раскрываем его | ||
$collapsibleContent.attr('aria-expanded', 'true'); | if ($collapsibleContent.hasClass('mw-collapsed')) { | ||
$collapsibleContent.removeClass('mw-collapsed'); | |||
$collapsibleContent.attr('aria-expanded', 'true'); | |||
} | |||
} | } | ||
} | } | ||
// 1. Выполняем функцию при первоначальной загрузке страницы | |||
// Мы ждём хук 'wikipage.content', чтобы убедиться, что контент точно на месте | |||
mw.hook('wikipage.content').add(expandSectionFromHash); | |||
// 2. Выполняем ТУ ЖЕ САМУЮ функцию каждый раз, когда меняется якорь в URL | |||
// (например, при клике на ссылку в содержании) | |||
$(window).on('hashchange', expandSectionFromHash); | |||
}); | }); | ||
Версия от 16:33, 12 июля 2025
jQuery(function($) {
/**
* Функция, которая находит якорь в URL, ищет соответствующий
* сворачиваемый блок и раскрывает его.
*/
function expandSectionFromHash() {
// Получаем якорь из URL (например, "Уровень_5")
var hash = window.location.hash.substring(1);
if (!hash) {
return; // Выходим, если якоря нет
}
// Декодируем якорь на случай, если он содержит кириллицу
var decodedHash = decodeURIComponent(hash);
// Ищем элемент-якорь на странице
var $targetAnchor = $('#' + $.escapeSelector(decodedHash));
if (!$targetAnchor.length) {
return; // Выходим, если якорь не найден
}
// Находим блок для раскрытия (родитель якоря, а затем следующий блок)
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');
}
}
}
// 1. Выполняем функцию при первоначальной загрузке страницы
// Мы ждём хук 'wikipage.content', чтобы убедиться, что контент точно на месте
mw.hook('wikipage.content').add(expandSectionFromHash);
// 2. Выполняем ТУ ЖЕ САМУЮ функцию каждый раз, когда меняется якорь в URL
// (например, при клике на ссылку в содержании)
$(window).on('hashchange', expandSectionFromHash);
});