diff --git a/README.md b/README.md index 18a2c93..ec01cff 100644 --- a/README.md +++ b/README.md @@ -377,6 +377,10 @@ It's called every time a page is switched, even for history buttons. Value (in px) to scrollTo when a page is switched. +##### `scrollRestoration` (Boolean, default true) + +When set to true, attempt to restore the scroll position when navigating backwards or forwards. + ##### `cacheBust` (Boolean, default true) When set to true, diff --git a/index.js b/index.js index 5655c91..5bb7a4e 100644 --- a/index.js +++ b/index.js @@ -306,7 +306,7 @@ Pjax.prototype = { } } } - else { + else if (state.options.scrollRestoration && state.options.scrollPos) { window.scrollTo(state.options.scrollPos[0], state.options.scrollPos[1]) } diff --git a/lib/proto/parse-options.js b/lib/proto/parse-options.js index fce3ec8..37c16c7 100644 --- a/lib/proto/parse-options.js +++ b/lib/proto/parse-options.js @@ -24,6 +24,7 @@ module.exports = function(options) { this.options.cacheBust = (typeof this.options.cacheBust === "undefined") ? true : this.options.cacheBust this.options.debug = this.options.debug || false this.options.timeout = this.options.timeout || 0 + this.options.scrollRestoration = (typeof this.options.scrollRestoration !== "undefined") ? this.options.scrollRestoration : true // we can’t replace body.outerHTML or head.outerHTML // it create a bug where new body or new head are created in the dom diff --git a/tests/lib/proto/parse-options.js b/tests/lib/proto/parse-options.js index 2b79435..8f57a65 100644 --- a/tests/lib/proto/parse-options.js +++ b/tests/lib/proto/parse-options.js @@ -53,6 +53,7 @@ tape("test parse initalization options function", function(t) { t.deepEqual(body1.options.scrollTo, 0); t.deepEqual(body1.options.cacheBust, true); t.deepEqual(body1.options.debug, false); + t.deepEqual(body1.options.scrollRestoration, true) t.end(); });