Дополнительные действия
Gardolir (обсуждение | вклад) Новая страница: «→Размещённый здесь код JavaScript будет загружаться пользователям при обращении к каждой странице: →* * Автоматически разворачивает сворачиваемый блок (.collapsible-block), * если пользователь переходит на страницу по ссылке с якорем (#).: mw.hook('wikipage.content').add(function($co...» |
Gardolir (обсуждение | вклад) Нет описания правки |
||
| (не показано 6 промежуточных версий этого же участника) | |||
| Строка 1: | Строка 1: | ||
/* | 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)); | |||
var $targetAnchor = $ | 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'); | |||
$header.trigger('click'); | |||
// Раскрываем блок, только если он действительно свёрнут | |||
if ($collapsibleContent.hasClass('mw-collapsed')) { | |||
// Используем минимальную задержку, чтобы скрипт MediaWiki | |||
// успел "повесить" свой обработчик клика на элемент. | |||
setTimeout(function() { | |||
$header.trigger('click'); | |||
}, 50); // 50 миллисекунд - незаметно для глаза, но достаточно для техники. | |||
} | } | ||
} | } | ||
} | } | ||
// Выполняем функцию при первоначальной загрузке страницы | |||
mw.hook('wikipage.content').add(expandSectionFromHash); | |||
// Выполняем ТУ ЖЕ САМУЮ функцию каждый раз, когда меняется якорь в URL | |||
$(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);
});