2
0
Эх сурвалжийг харах

fix IE11 problems with scrollX/scrollY

Adam Shaw 7 жил өмнө
parent
commit
96a4641765

+ 4 - 4
src/common/scroll-controller.ts

@@ -95,19 +95,19 @@ export class ElementScrollController extends ScrollController {
 export class WindowScrollController extends ScrollController {
 
   getScrollTop() {
-    return window.scrollY
+    return window.pageYOffset
   }
 
   getScrollLeft() {
-    return window.scrollX
+    return window.pageXOffset
   }
 
   setScrollTop(n: number) {
-    window.scroll(window.scrollX, n)
+    window.scroll(window.pageXOffset, n)
   }
 
   setScrollLeft(n: number) {
-    window.scroll(n, window.scrollY)
+    window.scroll(n, window.pageYOffset)
   }
 
   getScrollWidth() {

+ 4 - 4
src/dnd/AutoScroller.ts

@@ -53,8 +53,8 @@ export default class AutoScroller {
 
   handleMove(pageX: number, pageY: number) {
     if (this.isEnabled) {
-      let pointerScreenX = pageX - window.scrollX
-      let pointerScreenY = pageY - window.scrollY
+      let pointerScreenX = pageX - window.pageXOffset
+      let pointerScreenY = pageY - window.pageYOffset
 
       let yDelta = this.pointerScreenY === null ? 0 : pointerScreenY - this.pointerScreenY
       let xDelta = this.pointerScreenX === null ? 0 : pointerScreenX - this.pointerScreenX
@@ -95,8 +95,8 @@ export default class AutoScroller {
   private animate = () => {
     if (this.isAnimating) { // wasn't cancelled between animation calls
       let edge = this.computeBestEdge(
-        this.pointerScreenX! + window.scrollX,
-        this.pointerScreenY! + window.scrollY
+        this.pointerScreenX! + window.pageXOffset,
+        this.pointerScreenY! + window.pageYOffset
       )
 
       if (edge) {

+ 4 - 4
src/dnd/ElementMirror.ts

@@ -26,16 +26,16 @@ export default class ElementMirror {
   start(sourceEl: HTMLElement, pageX: number, pageY: number) {
     this.sourceEl = sourceEl
     this.sourceElRect = this.sourceEl.getBoundingClientRect()
-    this.origScreenX = pageX - window.scrollX
-    this.origScreenY = pageY - window.scrollY
+    this.origScreenX = pageX - window.pageXOffset
+    this.origScreenY = pageY - window.pageYOffset
     this.deltaX = 0
     this.deltaY = 0
     this.updateElPosition()
   }
 
   handleMove(pageX: number, pageY: number) {
-    this.deltaX = (pageX - window.scrollX) - this.origScreenX!
-    this.deltaY = (pageY - window.scrollY) - this.origScreenY!
+    this.deltaX = (pageX - window.pageXOffset) - this.origScreenX!
+    this.deltaY = (pageY - window.pageYOffset) - this.origScreenY!
     this.updateElPosition()
   }
 

+ 4 - 4
src/dnd/PointerDragging.ts

@@ -223,8 +223,8 @@ export default class PointerDragging {
     if (this.shouldWatchScroll) {
       this.prevPageX = (ev as any).pageX
       this.prevPageY = (ev as any).pageY
-      this.prevScrollX = window.scrollX
-      this.prevScrollY = window.scrollY
+      this.prevScrollX = window.pageXOffset
+      this.prevScrollY = window.pageYOffset
     }
   }
 
@@ -234,8 +234,8 @@ export default class PointerDragging {
         origEvent: ev,
         isTouch: this.isTouchDragging,
         subjectEl: this.subjectEl,
-        pageX: (window.scrollX - this.prevScrollX) + this.prevPageX,
-        pageY: (window.scrollY - this.prevScrollY) + this.prevPageY
+        pageX: (window.pageXOffset - this.prevScrollX) + this.prevPageX,
+        pageY: (window.pageYOffset - this.prevScrollY) + this.prevPageY
       } as PointerDragEvent)
     }
   }

+ 8 - 8
src/util/dom-geom.ts

@@ -76,20 +76,20 @@ export function computeRect(el): Rect {
   let rect = el.getBoundingClientRect()
 
   return {
-    left: rect.left + window.scrollX,
-    top: rect.top + window.scrollY,
-    right: rect.right + window.scrollX,
-    bottom: rect.bottom + window.scrollY
+    left: rect.left + window.pageXOffset,
+    top: rect.top + window.pageYOffset,
+    right: rect.right + window.pageXOffset,
+    bottom: rect.bottom + window.pageYOffset
   }
 }
 
 
 function computeViewportRect(): Rect {
   return {
-    left: window.scrollX,
-    right: window.scrollX + document.documentElement.clientWidth,
-    top: window.scrollY,
-    bottom: window.scrollY + document.documentElement.clientHeight
+    left: window.pageXOffset,
+    right: window.pageXOffset + document.documentElement.clientWidth,
+    top: window.pageYOffset,
+    bottom: window.pageYOffset + document.documentElement.clientHeight
   }
 }