41 lines
1.4 KiB
JavaScript
41 lines
1.4 KiB
JavaScript
/**
|
|
* @file
|
|
* Webform behaviors.
|
|
*/
|
|
|
|
(function ($, Drupal) {
|
|
|
|
'use strict';
|
|
|
|
// Trigger Drupal's attaching of behaviors after the page is
|
|
// completely loaded.
|
|
// @see https://stackoverflow.com/questions/37838430/detect-if-page-is-load-from-back-button
|
|
// @see https://stackoverflow.com/questions/20899274/how-to-refresh-page-on-back-button-click/20899422#20899422
|
|
var isChrome = (/chrom(e|ium)/.test(window.navigator.userAgent.toLowerCase()));
|
|
if (isChrome) {
|
|
// Track back button in navigation.
|
|
// @see https://stackoverflow.com/questions/37838430/detect-if-page-is-load-from-back-button
|
|
var backButton = false;
|
|
if (window.performance) {
|
|
var navEntries = window.performance.getEntriesByType('navigation');
|
|
if (navEntries.length > 0 && navEntries[0].type === 'back_forward') {
|
|
backButton = true;
|
|
}
|
|
else if (window.performance.navigation
|
|
&& window.performance.navigation.type === window.performance.navigation.TYPE_BACK_FORWARD) {
|
|
backButton = true;
|
|
}
|
|
}
|
|
|
|
// If the back button is pressed, delay Drupal's attaching of behaviors.
|
|
if (backButton) {
|
|
var attachBehaviors = Drupal.attachBehaviors;
|
|
Drupal.attachBehaviors = function (context, settings) {
|
|
setTimeout(function (context, settings) {
|
|
attachBehaviors(context, settings);
|
|
}, 300);
|
|
};
|
|
}
|
|
}
|
|
|
|
})(jQuery, Drupal);
|