Дополнительные действия
Gardolir (обсуждение | вклад) Нет описания правки |
Gardolir (обсуждение | вклад) Нет описания правки |
||
| Строка 2: | Строка 2: | ||
* Этот скрипт автоматически разворачивает сворачиваемый блок (.collapsible-block), | * Этот скрипт автоматически разворачивает сворачиваемый блок (.collapsible-block), | ||
* если пользователь переходит на страницу по ссылке с якорем (#). | * если пользователь переходит на страницу по ссылке с якорем (#). | ||
* Версия 2. | * Версия 2.1 - Добавлено декодирование кириллических и других символов в якоре. | ||
*/ | */ | ||
mw.hook('wikipage.content').add(function($content) { | mw.hook('wikipage.content').add(function($content) { | ||
// Получаем якорь из URL (например, " | // Получаем якорь из URL (например, "%D0%A3%D1%80%D0%BE%D0%B2%D0%B5%D0%BD%D1%8C_5") | ||
var hash = window.location.hash.substring(1); | var hash = window.location.hash.substring(1); | ||
if (!hash) { | if (!hash) { | ||
return; // Выходим, если якоря нет | return; // Выходим, если якоря нет | ||
} | } | ||
// Находим на странице элемент с | // --- КЛЮЧЕВОЕ ИЗМЕНЕНИЕ --- | ||
var $targetAnchor = $content.find('#' + $.escapeSelector( | // Декодируем якорь, чтобы превратить "%D0%A3..." обратно в "Уровень_5" | ||
var decodedHash = decodeURIComponent(hash); | |||
// Находим на странице элемент с РАСШИФРОВАННЫМ ID | |||
var $targetAnchor = $content.find('#' + $.escapeSelector(decodedHash)); | |||
if (!$targetAnchor.length) { | if (!$targetAnchor.length) { | ||
return; // Выходим, если якорь не найден | return; // Выходим, если якорь не найден | ||
} | } | ||
// Находим блок для раскрытия. | // Находим блок для раскрытия. | ||
| Строка 25: | Строка 26: | ||
var $collapsibleBlock = $targetAnchor.closest('.visually-hidden').next('.collapsible-block'); | var $collapsibleBlock = $targetAnchor.closest('.visually-hidden').next('.collapsible-block'); | ||
if ($collapsibleBlock.length) { | if ($collapsibleBlock.length) { | ||
// Находим внутри него сам сворачиваемый контент | // Находим внутри него сам сворачиваемый контент | ||
| Строка 31: | Строка 31: | ||
// Прямым образом удаляем класс, который его скрывает. | // Прямым образом удаляем класс, который его скрывает. | ||
if ($collapsibleContent.hasClass('mw-collapsed')) { | if ($collapsibleContent.hasClass('mw-collapsed')) { | ||
$collapsibleContent.removeClass('mw-collapsed'); | $collapsibleContent.removeClass('mw-collapsed'); | ||
Версия от 16:31, 12 июля 2025
/**
* Этот скрипт автоматически разворачивает сворачиваемый блок (.collapsible-block),
* если пользователь переходит на страницу по ссылке с якорем (#).
* Версия 2.1 - Добавлено декодирование кириллических и других символов в якоре.
*/
mw.hook('wikipage.content').add(function($content) {
// Получаем якорь из URL (например, "%D0%A3%D1%80%D0%BE%D0%B2%D0%B5%D0%BD%D1%8C_5")
var hash = window.location.hash.substring(1);
if (!hash) {
return; // Выходим, если якоря нет
}
// --- КЛЮЧЕВОЕ ИЗМЕНЕНИЕ ---
// Декодируем якорь, чтобы превратить "%D0%A3..." обратно в "Уровень_5"
var decodedHash = decodeURIComponent(hash);
// Находим на странице элемент с РАСШИФРОВАННЫМ ID
var $targetAnchor = $content.find('#' + $.escapeSelector(decodedHash));
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');
}
}
});