summaryrefslogtreecommitdiff
path: root/horizon
diff options
context:
space:
mode:
authorRuslan Aliev <raliev@mirantis.com>2017-12-03 12:27:40 +0400
committerVladislav Kuzmin <vkuzmin@mirantis.com>2018-01-30 15:34:59 +0400
commit7b45b7ae4b175afdfdb512ed87f425cc4f402f51 (patch)
treeb2fbbf1da16b58bef73664fba8b184a9e3d07f5b /horizon
parent6e09bfa700f2f07cc5f1036ed9025edef1b9b98f (diff)
downloadhorizon-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.js24
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();
+ }
+ });
+});
+