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
This commit is contained in:
Ruslan Aliev 2017-12-03 12:27:40 +04:00 committed by Vladislav Kuzmin
parent 6e09bfa700
commit 7b45b7ae4b
2 changed files with 25 additions and 0 deletions

View File

@ -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();
}
});
});

View File

@ -27,6 +27,7 @@
<script src='{{ STATIC_URL }}horizon/js/horizon.loader.js'></script>
<script src='{{ STATIC_URL }}horizon/js/horizon.messages.js'></script>
<script src='{{ STATIC_URL }}horizon/js/horizon.modals.js'></script>
<script src='{{ STATIC_URL }}horizon/js/horizon.hacks.js'></script>
<script type="text/javascript">
horizon.modals.MODAL_BACKDROP = "{% firstof HORIZON_CONFIG.modal_backdrop 'static' %}";
</script>