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