메뉴 여닫기
개인 메뉴 토글
로그인하지 않음
만약 지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
Dbstudy (토론 | 기여)님의 2026년 10월 31일 (토) 11:04 판 (대문 전용 학습 경로 전환 및 문서 검색 추가 (#ds-home에서만 실행))
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

참고: 설정을 저장한 후에 바뀐 점을 확인하기 위해서는 브라우저의 캐시를 새로 고쳐야 합니다.

  • 파이어폭스 / 사파리: Shift 키를 누르면서 새로 고침을 클릭하거나, Ctrl-F5 또는 Ctrl-R을 입력 (Mac에서는 ⌘-R)
  • 구글 크롬: Ctrl-Shift-R키를 입력 (Mac에서는 ⌘-Shift-R)
  • 인터넷 익스플로러 / 엣지: Ctrl 키를 누르면서 새로 고침을 클릭하거나, Ctrl-F5를 입력.
  • 오페라: Ctrl-F5를 입력.
/* 이 자바스크립트 설정은 모든 문서, 모든 사용자에게 적용됩니다. */


/* DB Study main page controls: does nothing outside #ds-home. */
(function(){mw.hook("wikipage.content").add(function(){
 var root=document.getElementById('ds-home');if(!root||root.dataset.initialized==='true')return;root.dataset.initialized='true';root.classList.add('ds-js-ready');
 var tabs=root.querySelectorAll('[data-tab]');
 function select(key){Array.prototype.forEach.call(tabs,function(b){var on=b.getAttribute('data-tab')===key;b.setAttribute('aria-selected',String(on));b.tabIndex=on?0:-1;});Array.prototype.forEach.call(root.querySelectorAll('[role="tabpanel"]'),function(p){p.classList.toggle('ds-active-panel',p.id==='ds-panel-'+key);});}
 Array.prototype.forEach.call(tabs,function(b){b.setAttribute('role','tab');b.addEventListener('click',function(e){e.preventDefault();select(b.getAttribute('data-tab'));});b.addEventListener('keydown',function(e){if(['ArrowLeft','ArrowRight','Home','End'].indexOf(e.key)<0)return;e.preventDefault();var key=e.key==='Home'?'beginner':e.key==='End'?'expert':b.getAttribute('data-tab')==='beginner'?'expert':'beginner';select(key);root.querySelector('[data-tab="'+key+'"]').focus();});});
 Array.prototype.forEach.call(root.querySelectorAll('[data-path]'),function(a){a.addEventListener('click',function(){select(a.getAttribute('data-path'));});});select(location.hash==='#ds-panel-expert'?'expert':'beginner');
 var mount=root.querySelector('#ds-search-mount');if(!mount)return;
 var form=document.createElement('form');form.className='ds-search-row';form.id='ds-search-form';form.action=new URL('index.php',mw.config.get('wgScript')?new URL(mw.config.get('wgScript'),location.origin):location.href).href;form.method='get';
 var title=document.createElement('input');title.type='hidden';title.name='title';title.value='특수:검색';form.appendChild(title);
 var icon=document.createElement('span');icon.className='ds-search-icon';icon.setAttribute('aria-hidden','true');form.appendChild(icon);
 var input=document.createElement('input');input.id='ds-search-input';input.type='search';input.name='search';input.placeholder='궁금한 개념이나 SQL을 검색해 보세요';input.setAttribute('aria-label','위키 문서 검색');input.autocomplete='off';form.appendChild(input);
 var submit=document.createElement('button');submit.type='submit';submit.textContent='검색';form.appendChild(submit);mount.replaceWith(form);
 var results=document.createElement('ul');results.id='ds-search-results';results.className='ds-results';results.hidden=true;results.setAttribute('aria-live','polite');input.setAttribute('aria-controls',results.id);form.insertAdjacentElement('afterend',results);
 var links=Array.prototype.slice.call(root.querySelectorAll('.ds-topic a,.ds-step h3 a,.ds-recent-list a'));
 input.addEventListener('input',function(){var q=input.value.trim().toLowerCase();results.textContent='';results.hidden=!q;if(!q)return;var seen={},matches=links.filter(function(a){var text=a.textContent.toLowerCase();var href=a.href;if(seen[href]||text.indexOf(q)===-1)return false;seen[href]=true;return true;}).slice(0,6);if(!matches.length){var li=document.createElement('li'),p=document.createElement('p');p.textContent='추천 문서에 없나요? 검색 버튼으로 전체 위키에서 찾아보세요.';li.appendChild(p);results.appendChild(li);}matches.forEach(function(a){var li=document.createElement('li'),link=document.createElement('a');link.href=a.href;link.textContent=a.textContent;li.appendChild(link);results.appendChild(li);});});
 form.addEventListener('submit',function(e){if(!input.value.trim()){e.preventDefault();input.focus();}});
});})();