미디어위키:Common.js
둘러보기로 이동
검색으로 이동
참고: 설정을 저장한 후에 바뀐 점을 확인하기 위해서는 브라우저의 캐시를 새로 고쳐야 합니다.
- 파이어폭스 / 사파리: Shift 키를 누르면서 새로 고침을 클릭하거나, Ctrl-F5 또는 Ctrl-R을 입력 (Mac에서는 ⌘-R)
- 구글 크롬: Ctrl-Shift-R키를 입력 (Mac에서는 ⌘-Shift-R)
- 인터넷 익스플로러 / 엣지: Ctrl 키를 누르면서 새로 고침을 클릭하거나, Ctrl-F5를 입력.
- 오페라: Ctrl-F5를 입력.
mw.hook('wikipage.content').add(function ($content) {
// 팝업 컨테이너 생성
const $popup = $('<div>')
.addClass('link-preview-popup')
.css({
display: 'none',
position: 'absolute',
border: '1px solid #ccc',
background: '#fff',
padding: '10px',
'z-index': 1000,
'box-shadow': '0 4px 8px rgba(0,0,0,0.1)',
'max-width': '300px',
'overflow-wrap': 'break-word',
});
// 팝업을 DOM에 추가
$('body').append($popup);
// 모든 내부 링크 선택
const links = $content.find('a');
links.each(function () {
const $link = $(this);
// 내부 링크 확인
if (
$link.attr('href') &&
($link.attr('href').startsWith(mw.config.get('wgScriptPath') + '/index.php/') ||
$link.attr('href').startsWith(mw.config.get('wgScriptPath') + '/wiki/'))
) {
$link.on('mouseenter', function (event) {
// 페이지 제목 추출
const pageTitle = decodeURIComponent(
$link.attr('href')
.replace(mw.config.get('wgScriptPath') + '/index.php/', '')
.replace(mw.config.get('wgScriptPath') + '/wiki/', '')
);
// MediaWiki API 호출
$.ajax({
url: mw.util.wikiScript('api'),
data: {
action: 'query',
prop: 'extracts',
titles: pageTitle,
format: 'json',
exintro: true, // 첫 번째 문단만 가져오기
explaintext: true, // HTML 태그 제거
},
dataType: 'json',
success: function (data) {
const pages = data.query.pages;
const page = Object.values(pages)[0];
if (page && page.extract) {
$popup.html(page.extract);
$popup.css({
top: event.pageY + 10,
left: event.pageX + 10,
}).fadeIn(200);
} else {
$popup.html('내용을 가져올 수 없습니다.');
}
},
error: function () {
$popup.html('오류가 발생했습니다.');
},
});
});
$link.on('mousemove', function (event) {
$popup.css({
top: event.pageY + 10,
left: event.pageX + 10,
});
});
$link.on('mouseleave', function () {
$popup.fadeOut(200);
});
}
});
});