새 문서: →모든 페이지에서 동작하게끔 Gadgets 정의 뒤, 아래 코드 저장: mw.loader.using(['mediawiki.util', 'oojs-ui-core'], function () { $(function () { // 1) 사전 데이터 가져오기 var node = document.getElementById('dictionary-json'); if (!node) return; // 사전 없는 페이지는 패스 var dict = JSON.parse(node.textContent); // 필요하면 활용 가능 // 2) 검색창 DOM 생성 var $table = $('.mw-diction... |
편집 요약 없음 |
||
2번째 줄: | 2번째 줄: | ||
mw.loader.using(['mediawiki.util', 'oojs-ui-core'], function () { | mw.loader.using(['mediawiki.util', 'oojs-ui-core'], function () { | ||
$(function () { | $(function () { | ||
// | /* ① 숨은 JSON 가져오기 */ | ||
var | var holder = document.getElementById('dictionary-json'); | ||
if (! | if (!holder) return; // 사전 없는 페이지는 건너뜀 | ||
var dict = JSON.parse( | var dict = JSON.parse(holder.textContent); // ← 그대로 파싱 | ||
// | /* ② 표 찾고, 검색창 끼우고, 실시간 필터 */ | ||
var $table | var $table = $('.mw-dictionary').first(); | ||
var $input = new OO.ui.TextInputWidget({ | var $input = new OO.ui.TextInputWidget({ | ||
placeholder: '단어·뜻 검색…', | placeholder: '단어·뜻 검색…', |
2025년 6월 29일 (일) 02:59 판
/* 모든 페이지에서 동작하게끔 Gadgets 정의 뒤, 아래 코드 저장 */
mw.loader.using(['mediawiki.util', 'oojs-ui-core'], function () {
$(function () {
/* ① 숨은 JSON 가져오기 */
var holder = document.getElementById('dictionary-json');
if (!holder) return; // 사전 없는 페이지는 건너뜀
var dict = JSON.parse(holder.textContent); // ← 그대로 파싱
/* ② 표 찾고, 검색창 끼우고, 실시간 필터 */
var $table = $('.mw-dictionary').first();
var $input = new OO.ui.TextInputWidget({
placeholder: '단어·뜻 검색…',
icons: ['search'],
indicator: null
}).$element.css({ width: '100%', 'margin-bottom': '0.5em' });
$table.before($input);
// 3) 필터링 로직
$input.on('input', function () {
var q = $(this).val().trim().toLowerCase();
$table.find('tr').each(function () {
var $row = $(this);
if ($row.find('th').length) return; // 헤더는 건너뜀
var term = $row.children('td').eq(0).text().toLowerCase();
var def = $row.children('td').eq(1).text().toLowerCase();
$qMatch = !q || term.includes(q) || def.includes(q);
$row.toggle($qMatch);
});
});
});
});