Here is how jQuery does it :
// Calculate pageX/Y if missing and clientX/Y available
if ( event.pageX == null && event.clientX != null ) {
var doc = document.documentElement, body = document.body;
event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);
event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);
}
Testing pageX (or pageY) or calculating it from clientX and scrollLeft ans clientLeft
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…