1
사용자가 웹 사이트의 아무 곳이나 클릭하면 마우스 x 및 y 위치를 등록하고 인쇄하려고합니다.화면에서 마우스 x 및 y 위치를 인쇄하려고합니다. 0
문제 : 항상 0, 0 위치를 인쇄합니다.
이 함수는 클릭 이벤트 핸들러 x 및 y
// get the position of click
function getPosition(el) {
var xPosition = 0;
var yPosition = 0;
while (el) {
if (el.tagName == "BODY") {
// deal with browser quirks with body/window/document and page scroll
var xScrollPos = el.scrollLeft || document.documentElement.scrollLeft;
var yScrollPos = el.scrollTop || document.documentElement.scrollTop;
xPosition += (el.offsetLeft - xScrollPos + el.clientLeft);
yPosition += (el.offsetTop - yScrollPos + el.clientTop);
} else {
xPosition += (el.offsetLeft - el.scrollLeft + el.clientLeft);
yPosition += (el.offsetTop - el.scrollTop + el.clientTop);
}
el = el.offsetParent;
}
return {
x: xPosition,
y: yPosition,
a: "hahah",
};
}
의 위치를 얻는다
function onClickDo(event) {
var el = event.CurrentTarget;
var posOb = getPosition(el);
for (var key in posOb) {
console.log(key);
}
alert(posOb.x + " x pos");
alert(posOb.y+ " y pos");
alert(posOb.a+ " random string");
}
온로드 기능
window.onload = function() {
document.onclick = onClickDo(event);
};
UPDATE 내가 그러나 내가 NaN
오류를 얻고있다 .. event.currentTarget
를 사용하여 el
을 정의했다
// Set up event handlers according to modern standards
window.addEventListener("load", function(){
document.addEventListener("click", handleClick);
});
function handleClick(event) {
var xPosition = 0;
var yPosition = 0;
var el = event.currentTarget; <----------------------- targeting the element not working
while (el) {
if (el.nodeName == "BODY") {
// deal with browser quirks with body/window/document and page scroll
var xScrollPos = el.scrollLeft || document.documentElement.scrollLeft;
var yScrollPos = el.scrollTop || document.documentElement.scrollTop;
xPosition += (el.offsetLeft - xScrollPos + el.clientLeft);
yPosition += (el.offsetTop - yScrollPos + el.clientTop);
} else {
xPosition += (el.offsetLeft - el.scrollLeft + el.clientLeft);
yPosition += (el.offsetTop - el.scrollTop + el.clientTop);
}
el = el.offsetParent;
}
// return {
// x: xPosition,
// y: yPosition,
// a: "hahah",
// };
alert(xPosition + " x pos" + " and " + yPosition + " y pos");
}
답변 기준으로합니다. 확실하지 않아. 도와주세요!
변경 : document.onclick = onClickDo(event);
로 : document.onclick = onClickDo;
당신은 이벤트 처리 기능에 이벤트를 통과하지
는 "onClicDo 즉시 대신에 클릭 이벤트를 기다리는 호출되고있다"- 나는 그게 문제입니다 이해합니다. 해결책은 무엇입니까? – Shaz
@Shaz 나는 이미 당신에게 해결책을 주었고, 내가 지정한대로 코드를 바꾼다. –
그래서 나는 event.offsetX 부모에 상대적인 것으로 생각하므로 올바른 코드를주지 않을 것입니다. handlerClick 함수에서 나는 다음과 같이 변경했다. 답안에서 업데이트 된 코드를 확인하십시오. 도움! – Shaz