미디어위키:Common.js 문서 원본 보기
←
미디어위키:Common.js
이동:
둘러보기
,
검색
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다:
사용자
.
이 문서는 이 위키의 소프트웨어 인터페이스에 쓰이는 문서로, 부정 행위를 막기 위해 보호되어 있습니다. 모든 위키에 대한 번역을 추가하거나 바꾸려면 미디어위키 지역화 프로젝트인
translatewiki.net
에 참여하시기 바랍니다.
문서의 원본을 보거나 복사할 수 있습니다.
/* 이 자바스크립트 설정은 모든 문서, 모든 사용자에게 적용됩니다. */ mw.hook('wikipage.content').add(function ($content) { // 보기 화면에서만 동작 if (mw.config.get('wgAction') !== 'view') { return; } var input = document.getElementById('myInput'); if (!input) { return; } var tbody = document.querySelector('.divTable .tbody'); if (!tbody) { return; } var rows = tbody.getElementsByClassName('row'); if (!rows.length) { return; } // 1) 행 텍스트를 미리 대문자로 캐시 var rowData = []; for (var i = 0; i < rows.length; i++) { var rowText = rows[i].textContent || rows[i].innerText || ''; rowData.push({ row: rows[i], textUpper: rowText.toUpperCase() }); } // 2) 실제 필터 함수 function filterEpisodes() { var text = input.textContent || input.innerText || ''; var filter = text.trim().toUpperCase(); // 검색어가 없으면 전부 보이기 if (!filter) { for (var i = 0; i < rowData.length; i++) { rowData[i].row.style.display = ''; } return; } for (var j = 0; j < rowData.length; j++) { if (rowData[j].textUpper.indexOf(filter) > -1) { rowData[j].row.style.display = ''; } else { rowData[j].row.style.display = 'none'; } } } // 3) 디바운스 헬퍼 (delay ms 동안 입력 멈췄을 때만 실행) function debounce(fn, delay) { var timer = null; return function () { var context = this; var args = arguments; if (timer) { clearTimeout(timer); } timer = setTimeout(function () { fn.apply(context, args); }, delay); }; } var debouncedFilter = debounce(filterEpisodes, 200); // 0.2초 // contenteditable div에서 input 이벤트만 사용해도 충분 input.addEventListener('input', debouncedFilter); }); /* ===== 스토리 목차: 탭 동작(한 번에 하나만 열기) ===== */ mw.hook('wikipage.content').add(function ($content) { var $tables = $content.find('.story-toc-tabs'); $tables.each(function () { var $table = $(this); var $tabs = $table.find('.story-tab'); if (!$tabs.length) return; // 탭 라벨 클릭 이벤트: 이벤트 중복 방지 위해 네임스페이스 사용 $table.off('click.storyTabs').on('click.storyTabs', '.story-tab-label', function (e) { e.preventDefault(); e.stopPropagation(); var $clickedTab = $(this).closest('.story-tab'); // 다른 탭 모두 닫기 $tabs.not($clickedTab).each(function () { var $t = $(this); if (!$t.hasClass('mw-collapsed')) { // mw-collapsible은 mw-collapsed 클래스 토글로 제어 가능 $t.addClass('mw-collapsed'); $t.find('.mw-collapsible-content').first().hide(); } }); // 클릭한 탭 열기 if ($clickedTab.hasClass('mw-collapsed')) { $clickedTab.removeClass('mw-collapsed'); $clickedTab.find('.mw-collapsible-content').first().show(); } }); // 초기 상태 보정: // 혹시 렌더링 환경에 따라 content가 display:block으로 남아있으면 collapsed면 숨김 처리 $tabs.each(function () { var $t = $(this); var $panel = $t.find('.mw-collapsible-content').first(); if ($t.hasClass('mw-collapsed')) { $panel.hide(); } else { $panel.show(); } }); }); }); mw.hook('wikipage.content').add(function ($content) { $content.find('.story-tabs').each(function () { var $wrap = $(this); var $btns = $wrap.find('.story-tab-btn'); var $panels = $wrap.find('.story-tab-panel'); function closeAll() { $panels.each(function () { var $p = $(this); $p.addClass('mw-collapsed'); $p.find('.mw-collapsible-content').first().hide(); }); $btns.removeClass('is-active'); } function openPanel(selector) { var $p = $wrap.find(selector).first(); if (!$p.length) return; $p.removeClass('mw-collapsed'); $p.find('.mw-collapsible-content').first().show(); } // 초기 상태 보정 $panels.each(function () { var $p = $(this); var $c = $p.find('.mw-collapsible-content').first(); if ($p.hasClass('mw-collapsed')) $c.hide(); else $c.show(); }); // 클릭 이벤트 $wrap.off('click.storyTabs10').on('click.storyTabs10', '.story-tab-btn', function (e) { e.preventDefault(); var $btn = $(this); var target = $btn.attr('data-target'); closeAll(); $btn.addClass('is-active'); openPanel(target); }); // (선택) 첫 탭 기본 오픈: 필요하면 주석 해제 // $btns.first().trigger('click'); }); });
미디어위키:Common.js
문서로 돌아갑니다.
둘러보기 메뉴
개인 도구
한국어
로그인
이름공간
메시지
토론
변수
보기
읽기
원본 보기
역사 보기
더 보기
검색
둘러보기
대문
최근 바뀜
임의 문서로
Help about MediaWiki
스토리
주요 스토리
지역화 스토리
AI 스토리텔링 어시스턴트
English
English Contents
도구
여기를 가리키는 문서
가리키는 글의 최근 바뀜
특수 문서 목록
문서 정보