getWindowSizes.js
773 Bytes
import isIE10 from './isIE10';
function getSize(axis, body, html, computedStyle) {
return Math.max(
body[`offset${axis}`],
body[`scroll${axis}`],
html[`client${axis}`],
html[`offset${axis}`],
html[`scroll${axis}`],
isIE10()
? html[`offset${axis}`] +
computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}`] +
computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}`]
: 0
);
}
export default function getWindowSizes() {
const body = window.document.body;
const html = window.document.documentElement;
const computedStyle = isIE10() && window.getComputedStyle(html);
return {
height: getSize('Height', body, html, computedStyle),
width: getSize('Width', body, html, computedStyle),
};
}