+function ($) { 'use strict'; $.fn.historyTabs = function() { var that = this; window.addEventListener('popstate', function(event) { if (event.state) { $(that).filter('[href="' + event.state.url + '"]').tab('show'); } else { $(that).filter('[href="#authentication"]').tab('show'); } }); return this.each(function(index, element) { $(element).on('show.bs.tab', function() { var stateObject = {'url' : $(this).attr('href')}; if (stateObject.url !== window.location.hash) { window.history.pushState(stateObject, document.title, window.location.pathname + $(this).attr('href')); } }); if (!window.location.hash && $(element).is('.active')) { // Shows the first element if there are no query parameters. $(element).tab('show'); } else if ($(this).attr('href') === window.location.hash) { $(element).tab('show'); } }); }; }(jQuery);