From e0530f39fa1f094aff2d3c8ddd8bf35fac798245 Mon Sep 17 00:00:00 2001 From: Nick Williams Date: Wed, 18 Sep 2019 16:04:33 +0100 Subject: [PATCH] Revert "remove async behaviour of init. fixes #338" --- cypress/integration/headroom.spec.js | 2 ++ src/Headroom.js | 22 ++++++++++++++++------ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/cypress/integration/headroom.spec.js b/cypress/integration/headroom.spec.js index fba7b09..311ee11 100644 --- a/cypress/integration/headroom.spec.js +++ b/cypress/integration/headroom.spec.js @@ -6,6 +6,7 @@ describe("Headroom", function() { win.hr = new win.Headroom(win.document.querySelector("header"), options); win.hr.init(); }); + cy.wait(200); }; beforeEach(() => { @@ -261,6 +262,7 @@ describe("Headroom", function() { bottom: false }); }); + cy.wait(20).then(() => {}); cy.scrollTo(0, 0); cy.should(() => { diff --git a/src/Headroom.js b/src/Headroom.js index adca1b0..ec7d627 100644 --- a/src/Headroom.js +++ b/src/Headroom.js @@ -34,7 +34,19 @@ Headroom.prototype = { if (Headroom.cutsTheMustard && !this.initialised) { this.addClass("initial"); this.initialised = true; - this.scrollTracker = trackScroll(this.scroller, this.update.bind(this)); + + // defer event registration to handle browser + // potentially restoring previous scroll position + setTimeout( + function(self) { + self.scrollTracker = trackScroll( + self.scroller, + self.update.bind(self) + ); + }, + 100, + this + ); } return this; @@ -45,11 +57,9 @@ Headroom.prototype = { * @public */ destroy: function() { - if (this.initialised) { - this.initialised = false; - Object.keys(this.classes).forEach(this.removeClass, this); - this.scrollTracker.destroy(); - } + this.initialised = false; + Object.keys(this.classes).forEach(this.removeClass, this); + this.scrollTracker.destroy(); }, /**