diff --git a/src/_h5ai/client/js/inc/core/location.js b/src/_h5ai/client/js/inc/core/location.js index 8a801d89..7f416270 100644 --- a/src/_h5ai/client/js/inc/core/location.js +++ b/src/_h5ai/client/js/inc/core/location.js @@ -178,17 +178,17 @@ modulejs.define('core/location', ['_', 'modernizr', 'core/event', 'core/notify', } } + function onPopState(ev) { - if (history) { - window.onpopstate = function (ev) { - - if (ev.state && ev.state.absHref) { - setLocation(ev.state.absHref, true); - } - }; + if (ev.state && ev.state.absHref) { + setLocation(ev.state.absHref, true); + } } + window.onpopstate = history ? onPopState : null; + + return { forceEncoding: forceEncoding, getDomain: getDomain, diff --git a/test/tests/unit/core/location.js b/test/tests/unit/core/location.js index 3d0ddb7f..a44f5b65 100644 --- a/test/tests/unit/core/location.js +++ b/test/tests/unit/core/location.js @@ -86,7 +86,7 @@ describe('module \'' + ID + '\'', function () { assert.lengthOfKeys(instance, 7); }); - it('sets window.onpopstate when history and fastBrowsing', function () { + it('sets window.onpopstate function when history and fastBrowsing', function () { this.xModernizr.history = true; this.xSettings.view.fastBrowsing = true; @@ -96,7 +96,7 @@ describe('module \'' + ID + '\'', function () { assert.isFunction(window.onpopstate); }); - it('does not set window.onpopstate when not history and fastBrowsing', function () { + it('sets window.onpopstate to null when not history and fastBrowsing', function () { this.xModernizr.history = false; this.xSettings.view.fastBrowsing = true; @@ -106,7 +106,7 @@ describe('module \'' + ID + '\'', function () { assert.isNull(window.onpopstate); }); - it('does not set window.onpopstate when history and not fastBrowsing', function () { + it('sets window.onpopstate to null when history and not fastBrowsing', function () { this.xModernizr.history = true; this.xSettings.view.fastBrowsing = false; @@ -116,7 +116,7 @@ describe('module \'' + ID + '\'', function () { assert.isNull(window.onpopstate); }); - it('does not set window.onpopstate when not history and not fastBrowsing', function () { + it('sets window.onpopstate to null when not history and not fastBrowsing', function () { this.xModernizr.history = false; this.xSettings.view.fastBrowsing = false;