41 lines
		
	
	
		
			996 B
		
	
	
	
		
			TypeScript
		
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			996 B
		
	
	
	
		
			TypeScript
		
	
	
function getScroll(w: Window) {
 | 
						|
  let ret = w.pageXOffset;
 | 
						|
  const method = 'scrollLeft';
 | 
						|
  if (typeof ret !== 'number') {
 | 
						|
    const d = w.document;
 | 
						|
    // ie6,7,8 standard mode
 | 
						|
    ret = d.documentElement[method];
 | 
						|
    if (typeof ret !== 'number') {
 | 
						|
      // quirks mode
 | 
						|
      ret = d.body[method];
 | 
						|
    }
 | 
						|
  }
 | 
						|
  return ret;
 | 
						|
}
 | 
						|
 | 
						|
function getClientPosition(elem: HTMLElement) {
 | 
						|
  let x: number;
 | 
						|
  let y: number;
 | 
						|
  const doc = elem.ownerDocument;
 | 
						|
  const { body } = doc;
 | 
						|
  const docElem = doc && doc.documentElement;
 | 
						|
  const box = elem.getBoundingClientRect();
 | 
						|
  x = box.left;
 | 
						|
  y = box.top;
 | 
						|
  x -= docElem.clientLeft || body.clientLeft || 0;
 | 
						|
  y -= docElem.clientTop || body.clientTop || 0;
 | 
						|
  return {
 | 
						|
    left: x,
 | 
						|
    top: y,
 | 
						|
  };
 | 
						|
}
 | 
						|
 | 
						|
export function getOffsetLeft(el: HTMLElement) {
 | 
						|
  const pos = getClientPosition(el);
 | 
						|
  const doc = el.ownerDocument;
 | 
						|
  // Only IE use `parentWindow`
 | 
						|
  const w: Window = doc.defaultView || (doc as any).parentWindow;
 | 
						|
  pos.left += getScroll(w);
 | 
						|
  return pos.left;
 | 
						|
}
 |