미디어위키:Liberty.js

신사 (토론 | 기여)님의 2024년 12월 10일 (화) 10:42 판

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

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

document.addEventListener('DOMContentLoaded', function() {
  function changeOrder() {
    const wrapper = document.querySelector('.liberty-content-header');
    const alertNotice = document.querySelector('.alert.alert-dismissible.fade.in.alert-info.liberty-notice');
    const contentTools = document.querySelector('.content-tools');
    const title = document.querySelector('.title');
    const contentSub = document.querySelector('.contentSub');

    if (!wrapper || !alertNotice || !contentTools || !title || !contentSub) {
      console.log("Required elements not found.");
      return;
    }

    // 화면 너비가 1022.4px 이하일 때
    if (window.innerWidth <= 1022.4) {
      // alertNotice → title → contentTools → contentSub 순으로 변경
      wrapper.appendChild(alertNotice);
      wrapper.appendChild(title);      // title을 두 번째로 이동
      wrapper.appendChild(contentTools); // contentTools를 세 번째로 이동
      wrapper.appendChild(contentSub);   // contentSub는 그대로
    } else {
      // 1022.4px 이상일 때 순서 변경
      wrapper.appendChild(alertNotice);  // alertNotice는 첫 번째
      wrapper.appendChild(contentTools); // contentTools는 두 번째
      wrapper.appendChild(title);        // title은 세 번째
      wrapper.appendChild(contentSub);   // contentSub는 네 번째
    }
  }

  // 페이지 로딩 후 즉시 순서 변경
  changeOrder();

  // 창 크기 변경 시마다 순서 업데이트
  window.addEventListener('resize', function() {
    changeOrder();
  });
});

// "mw-redirectedfrom" 클래스를 가진 요소 찾기
const redirectedFromElement = document.querySelector('.mw-redirectedfrom');

// 해당 요소가 존재하면
if (redirectedFromElement) {
  // 텍스트에서 괄호와 괄호 안의 내용을 제거하고 남은 부분만 수정
  redirectedFromElement.innerHTML = redirectedFromElement.innerHTML.replace(/[()]/g, '').trim();
}

$( window ).on( 'load', function () {
	'use strict';
	var hash, navHeight, id;

	/* Anchor Process */
	hash = window.location.hash;
	navHeight = $( '.nav-wrapper' ).height();

	if ( hash.indexOf( '.' ) !== -1 ) {
		hash = String( hash );
		hash = document.getElementById( hash.replace( '#', '' ) );
	}

	if ( hash ) {
		$( 'html, body' ).animate( { scrollTop: $( hash ).offset().top - navHeight - 10 }, 350 );
	}
	/* Anchor Process End */

	/* ToC click process */
	$( '.toc ul li > a' ).click( function () {
		if ( $( this ).attr( 'href' )[ 0 ] === '#' ) {
			id = String( $( this ).attr( 'href' ) );
			if ( id.indexOf( '.' ) !== -1 ) {
				id = document.getElementById( id.replace( '#', '' ) );
			}
			$( 'html,body' ).animate( {
				scrollTop: ( $( id ).offset().top - navHeight - 10 )
			}, 350 );
			return false;
		}
	} );
	/* ToC click process End */

	/* Title number click process */
	$( '.mw-headline-number' ).click( function () {
		$( 'html,body' ).animate( {
			scrollTop: ( $( '#toctitle' ).offset().top - navHeight - 10 )
		}, 350 );
		return false;
	} );
	/* Title number click process End */

	/* ToC Click Process */
	$( '.mw-cite-backlink > a').click( function () {
		if ( $( this ).attr( 'href' )[ 0 ] === '#' ) {
			id = String( $( this ).attr( 'href' ) );
			if ( id.indexOf( '.' ) !== -1 ) {
				id = document.getElementById( id.replace( '#', '' ) );
			}
			$( 'html,body' ).animate( {
				scrollTop: ( $( id ).offset().top - navHeight - 10 )
			}, 400 );
			return false;
		}
	} );

	$( '.mw-cite-backlink > * > a' ).click( function () {
		if ( $( this ).attr( 'href' )[ 0 ] === '#' ) {
			id = String( $( this ).attr( 'href' ) );
			if ( id.indexOf( '.' ) !== -1 ) {
				id = document.getElementById( id.replace( '#', '' ) );
			}
			$( 'html,body' ).animate( {
				scrollTop: ( $( id ).offset().top - navHeight - 10 )
			}, 400 );
			return false;
		}
	} );

	$( '.reference > a' ).click( function () {
		if ( $( this ).attr( 'href' )[ 0 ] === '#' ) {
			id = String( $( this ).attr( 'href' ) );
			if ( id.indexOf( '.' ) !== -1 ) {
				id = document.getElementById( id.replace( '#', '' ) );
			}
			$( 'html,body' ).animate( {
				scrollTop: ( $( id ).offset().top - navHeight - 10 )
			}, 400 );
			return false;
		}
	} );
	/* ToC Click Process End */

	/* Preference Tab Click Process */
	$( '#preftoc li > a' ).click( function () {
		if ( $( this ).attr( 'href' )[ 0 ] === '#' ) {
			id = String( $( this ).attr( 'href' ) );
			if ( id.indexOf( '.' ) !== -1 ) {
				id = document.getElementById( id.replace( '#', '' ) );
			}
			$( 'html,body' ).animate( {
				scrollTop: ( 0 )
			}, 350 );
		}
	} );
	/* Preference Tab Click Process End */
} );