diff options
author | Ruslan Aliev <raliev@mirantis.com> | 2017-12-03 12:27:40 +0400 |
---|---|---|
committer | Vladislav Kuzmin <vkuzmin@mirantis.com> | 2018-01-30 15:34:59 +0400 |
commit | 7b45b7ae4b175afdfdb512ed87f425cc4f402f51 (patch) | |
tree | b2fbbf1da16b58bef73664fba8b184a9e3d07f5b /horizon | |
parent | 6e09bfa700f2f07cc5f1036ed9025edef1b9b98f (diff) | |
download | horizon-7b45b7ae4b175afdfdb512ed87f425cc4f402f51.tar.gz |
Fix back button on Firefox and Safari
Firefox (and Safari) uses bfcache (back-forward cache)
to load re-visited pages. The solution is to force a reload
when page is loaded from bfcache, so back button will work
correctly.
More information can be found here [1] and here [2].
[1] https://madhatted.com/2013/6/16/you-do-not-understand-browser-history
[2] https://stackoverflow.com/questions/8788802/prevent-safari-loading-from-cache-when-back-button-is-clicked
Change-Id: If023bca7c73f983e55c383856e304379c7b8be3a
Closes-bug: #1686315
Diffstat (limited to 'horizon')
-rw-r--r-- | horizon/static/horizon/js/horizon.hacks.js | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/horizon/static/horizon/js/horizon.hacks.js b/horizon/static/horizon/js/horizon.hacks.js new file mode 100644 index 000000000..d1db9fa93 --- /dev/null +++ b/horizon/static/horizon/js/horizon.hacks.js @@ -0,0 +1,24 @@ +/** + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + */ + +// Added so that we can break Firefox and Safari bfcache to +// prevent loading previous page from cache. +horizon.addInitFunction(function () { + $(window).bind('pageshow', function(event) { + if (event.originalEvent.persisted) { + window.location.reload(); + } + }); +}); + |