MediaWiki:Common.js: Difference between revisions

No edit summary
No edit summary
Line 63: Line 63:
var mouseY=0;
var mouseY=0;
/* 각주 팝업창 위치 보정 DOM */
/* 각주 팝업창 위치 보정 DOM */
document.body.addEventListener('DOMNodeInserted', function (e) {
    if (e.target.classList && e.target.classList.contains('rt-tooltip')) {
console.log('contains mouseover');
        //var referenceId = e.target.getAttribute('href').replace('#', '');
        //var popup = document.getElementById(referenceId);
        var popup = e.target;
        console.log(popup);
        if (popup) {
            showPopupAtMousePosition(popup);
        }
    }
});
document.body.addEventListener('mouseover', function (e) {
mouseX = e.clientX;
mouseY = e.clientY;
});
function showPopupAtMousePosition(popup) {
console.log('1', mouseX, mouseY);
    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;
    }
                var bodyLeft = document.body.getBoundingClientRect().left;
                var left = parseInt(window.getComputedStyle(popup).left);
console.log('2', mouseX, mouseY);
    popup.style.top = mouseX + 'px';
    popup.style.left = mouseY + 'px';
    popup.style.display = 'block';
    console.log(popup);
}
/*
document.body.addEventListener(
document.body.addEventListener(
     'DOMNodeInserted',
     'DOMNodeInserted',
Line 128: Line 77:
     false
     false
);
);
*/
 


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