MediaWiki:Common.js: Difference between revisions

No edit summary
No edit summary
Line 62: Line 62:


/* 각주 팝업창 위치 보정 DOM */
/* 각주 팝업창 위치 보정 DOM */
document.body.addEventListener('mouseover', function (e) {
    if (e.target.classList && e.target.classList.contains('rt-tooltip')) {
        var referenceId = e.target.getAttribute('href').replace('#', '');
        var popup = document.getElementById(referenceId);
        if (popup) {
            showPopupAtMousePosition(e.clientX, e.clientY, popup);
        }
    }
});
document.body.addEventListener('mouseout', function (e) {
    if (e.target.classList && e.target.classList.contains('rt-tooltip')) {
        var referenceId = e.target.getAttribute('href').replace('#', '');
        var popup = document.getElementById(referenceId);
        if (popup) {
            popup.style.display = 'none';
        }
    }
});
function showPopupAtMousePosition(mouseX, mouseY, popup) {
    var windowHeight = window.innerHeight;
    var windowWidth = window.innerWidth;
    var popupHeight = popup.clientHeight;
    var popupWidth = popup.clientWidth;
    var popupTop = mouseY + 20;
    var popupLeft = mouseX + 20;
    // 팝업이 브라우저 창 아래쪽으로 벗어나는 경우
    if ((popupTop + popupHeight) > windowHeight) {
        popupTop = windowHeight - popupHeight - 20;
    }
    // 팝업이 브라우저 창 오른쪽으로 벗어나는 경우
    if ((popupLeft + popupWidth) > windowWidth) {
        popupLeft = windowWidth - popupWidth - 20;
    }
    popup.style.top = popupTop + 'px';
    popup.style.left = popupLeft + 'px';
    popup.style.display = 'block';
}
/*
document.body.addEventListener(
document.body.addEventListener(
     'DOMNodeInserted',
     'DOMNodeInserted',
Line 76: Line 122:
     false
     false
);
);
 
*/


/* 우클릭 방지  */
/* 우클릭 방지  */