미디어위키:Common.js: 두 판 사이의 차이
둘러보기로 이동
검색으로 이동
편집 요약 없음 |
편집 요약 없음 태그: 되돌려진 기여 |
||
| 1번째 줄: | 1번째 줄: | ||
/* 이 자바스크립트 설정은 모든 문서, 모든 사용자에게 적용됩니다. */ | /* 이 자바스크립트 설정은 모든 문서, 모든 사용자에게 적용됩니다. */ | ||
mw.hook('wikipage.content').add(function ($content) { | |||
$content.find('h3, h4').each(function () { | |||
const $heading = $(this); | |||
if ($heading.data('fold-ready')) return; | |||
$heading.data('fold-ready', true); | |||
const level = this.tagName.toLowerCase(); | |||
// 아이콘 생성 | |||
const $icon = $('<span class="mw-fold-icon">▾</span>'); | |||
$heading.prepend($icon); | |||
// 본문 wrapper | |||
let $wrapper = $('<div class="mw-fold-content"></div>'); | |||
let $next = $heading.next(); | |||
while ( | |||
$next.length && | |||
!$next.is('h2') && | |||
!($next.is('h3') && level === 'h3') && | |||
!($next.is('h4') && level === 'h4') | |||
) { | |||
let $current = $next; | |||
$next = $next.next(); | |||
$wrapper.append($current); | |||
} | |||
if ($wrapper.children().length === 0) return; | |||
$heading.after($wrapper); | |||
// 기본 상태 (펼침) | |||
let collapsed = false; | |||
// 클릭 이벤트 (아이콘 + 제목) | |||
$heading.on('click', function () { | |||
collapsed = !collapsed; | |||
if (collapsed) { | |||
$icon.text('▸'); | |||
$wrapper.slideUp(150); | |||
$heading.addClass('mw-fold-collapsed'); | |||
} else { | |||
$icon.text('▾'); | |||
$wrapper.slideDown(150); | |||
$heading.removeClass('mw-fold-collapsed'); | |||
} | |||
}); | |||
}); | |||
}); | |||
2026년 1월 15일 (목) 06:19 판
/* 이 자바스크립트 설정은 모든 문서, 모든 사용자에게 적용됩니다. */
mw.hook('wikipage.content').add(function ($content) {
$content.find('h3, h4').each(function () {
const $heading = $(this);
if ($heading.data('fold-ready')) return;
$heading.data('fold-ready', true);
const level = this.tagName.toLowerCase();
// 아이콘 생성
const $icon = $('<span class="mw-fold-icon">▾</span>');
$heading.prepend($icon);
// 본문 wrapper
let $wrapper = $('<div class="mw-fold-content"></div>');
let $next = $heading.next();
while (
$next.length &&
!$next.is('h2') &&
!($next.is('h3') && level === 'h3') &&
!($next.is('h4') && level === 'h4')
) {
let $current = $next;
$next = $next.next();
$wrapper.append($current);
}
if ($wrapper.children().length === 0) return;
$heading.after($wrapper);
// 기본 상태 (펼침)
let collapsed = false;
// 클릭 이벤트 (아이콘 + 제목)
$heading.on('click', function () {
collapsed = !collapsed;
if (collapsed) {
$icon.text('▸');
$wrapper.slideUp(150);
$heading.addClass('mw-fold-collapsed');
} else {
$icon.text('▾');
$wrapper.slideDown(150);
$heading.removeClass('mw-fold-collapsed');
}
});
});
});