FIX: ensures the element is on the page before scroll with lockon (#8458)
This commit is contained in:
parent
be1510b09d
commit
b74679f231
|
@ -35,7 +35,7 @@ export default class LockOn {
|
|||
|
||||
elementTop() {
|
||||
const $selected = $(this.selector);
|
||||
if ($selected && $selected.offset && $selected.offset()) {
|
||||
if ($selected.length && $selected.offset && $selected.offset()) {
|
||||
return $selected.offset().top - minimumOffset();
|
||||
}
|
||||
}
|
||||
|
@ -49,12 +49,14 @@ export default class LockOn {
|
|||
}
|
||||
|
||||
lock() {
|
||||
let previousTop = this.elementTop();
|
||||
const startedAt = new Date().getTime();
|
||||
|
||||
$(window).scrollTop(previousTop);
|
||||
let previousTop = this.elementTop();
|
||||
|
||||
const interval = setInterval(() => {
|
||||
if (!previousTop) {
|
||||
previousTop = this.elementTop();
|
||||
previousTop && $(window).scrollTop(previousTop);
|
||||
} else {
|
||||
const top = Math.max(0, this.elementTop());
|
||||
const scrollTop = $(window).scrollTop();
|
||||
|
||||
|
@ -66,6 +68,7 @@ export default class LockOn {
|
|||
$(window).scrollTop(top);
|
||||
previousTop = top;
|
||||
}
|
||||
}
|
||||
|
||||
// Commit suicide after a little while
|
||||
if (new Date().getTime() - startedAt > LOCK_DURATION_MS) {
|
||||
|
|
Loading…
Reference in New Issue