blob: 09158c38a9f2c47e58446a8a84fabd2c31e7aa9f [file] [log] [blame]
/*
Copyright (c) 2012 The Chromium Authors. All rights reserved.
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
*/
/**
* @fileoverview Collection of functions which operate on DOM.
*/
var domUtils = window['domUtils'] || {};
/**
* Returns pageX and pageY of the given element.
*
* @param {Element} element An element of which the top-left position is to be
* returned in the coordinate system of the document page.
* @return {Object} A point object which has {@code x} and {@code y} fields.
*/
domUtils.pageXY = function(element) {
var x = 0, y = 0;
for (; element; element = element.offsetParent) {
x += element.offsetLeft;
y += element.offsetTop;
}
return {'x': x, 'y': y};
};
/**
* Returns pageX and pageY of the given event.
*
* @param {Event} event An event of which the position is to be returned in
* the coordinate system of the document page.
* @return {Object} A point object which has {@code x} and {@code y} fields.
*/
domUtils.pageXYOfEvent = function(event) {
return (event.pageX != null && event.pageY != null) ?
{'x': event.pageX, 'y': event.pageY} :
{'x': event.clientX + document.body.scrollLeft +
document.documentElement.scrollLeft,
'y': event.clientY + document.body.scrollTop +
document.documentElement.scrollTop};
};