최근 바뀜
도구
업로드
도움말
문서 작성
위키 문법
길라잡이
특수 문서
문의·신고
디스코드
IP 사용자
216.73.216.149
로그인
미디어위키:Gadget-CSSVars.js 문서 원본 보기
←
미디어위키:Gadget-CSSVars.js
편집
토론
역사
새로고침
주시
역링크
정보
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다:
사용자
.
이 문서는 이 위키의 소프트웨어 인터페이스에 쓰이는 문서로, 부정 행위를 막기 위해 보호되어 있습니다. 모든 위키에 대한 번역을 추가하거나 바꾸려면 미디어위키 지역화 프로젝트인
translatewiki.net
에 참여하시기 바랍니다.
모든 방문자에게 영향을 미칠 수 있기 때문에 이 자바스크립트 문서의 편집 권한이 없습니다.
문서의 원본을 보거나 복사할 수 있습니다.
mw.loader.using( ['oojs-ui-core', 'oojs-ui.styles.icons-interactions', 'mediawiki.util', 'jquery'], function () { // 1. $content가 전역에 없을 경우를 대비해 안전하게 참조 (보통 위키 본문 영역) const $contentArea = window.$content | $('#mw-content-text'); const $el = $contentArea.find('.mw-page-css-vars').first(); if (!$el.length) return; let vars; try { // .attr() 대신 .data()를 사용하면 jQuery가 자동으로 JSON 파싱을 시도할 수 있지만, // 데이터 속성명에 따라 다르므로 기존 JSON.parse 방식을 유지하되 안전하게 처리합니다. const rawData = $el.attr('data-vars'); vars = JSON.parse(rawData); } catch (e) { console.error('[PageCSSVars] JSON 파싱 에러:', e); return; } const themes = { common: [], light: [], dark: [] }; // 2. 루프 내에서 문자열 조작을 미리 처리하여 가독성 및 성능 향상 Object.entries(vars).forEach(([key, value]) => { if (key.endsWith('-light')) { themes.light.push(`--${key.replace(/-light$/, '')}: ${value} !important;`); } else if (key.endsWith('-dark')) { themes.dark.push(`--${key.replace(/-dark$/, '')}: ${value} !important;`); } else { themes.common.push(`--${key}: ${value} !important;`); } }); // 3. CSS 문자열 조립 let cssLines = []; if (themes.common.length) { cssLines.push(`:root { ${themes.common.join(' ')} }`); } if (themes.light.length) { cssLines.push(`@media (prefers-color-scheme: light) { :root { ${themes.light.join(' ')} } }`); } if (themes.dark.length) { cssLines.push(`@media (prefers-color-scheme: dark) { :root { ${themes.dark.join(' ')} } }`); } // 4. 최종 주입 if (cssLines.length) { const finalCss = cssLines.join('\n'); mw.util.addCSS(finalCss); } } );
미디어위키:Gadget-CSSVars.js
문서로 돌아갑니다.