mirror of
https://github.com/McShelby/hugo-theme-relearn.git
synced 2024-11-23 15:57:57 +00:00
history: don't reload page when history gets cleared #299
This commit is contained in:
parent
3e83d03bce
commit
96aa7af4fb
3 changed files with 36 additions and 25 deletions
|
@ -102,7 +102,7 @@
|
||||||
</a>
|
</a>
|
||||||
<script>variants.markSelectedVariant();</script>
|
<script>variants.markSelectedVariant();</script>
|
||||||
</li>
|
</li>
|
||||||
<li class="footerVisitedLinks{{if $showvisitedlinks}} showVisitedLinks{{end}}"><a class="padding" href="#" data-clear-history-toggle=""><i class="fas fa-history fa-fw"></i> {{ T "Clear-History" }}</a></li>
|
<li class="footerVisitedLinks{{if $showvisitedlinks}} showVisitedLinks{{end}}"><a class="padding" onclick="clearHistory();"><i class="fas fa-history fa-fw"></i> {{ T "Clear-History" }}</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div id="footer" class="footerFooter{{if $showfooter}} showFooter{{end}}">
|
<div id="footer" class="footerFooter{{if $showfooter}} showFooter{{end}}">
|
||||||
|
|
|
@ -1379,6 +1379,10 @@ rapi-doc {
|
||||||
display: initial;
|
display: initial;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.footerVisitedLinks a {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
@media screen and (max-width: 47.938em) {
|
@media screen and (max-width: 47.938em) {
|
||||||
#breadcrumbs .links {
|
#breadcrumbs .links {
|
||||||
display: none;
|
display: none;
|
||||||
|
|
|
@ -648,6 +648,36 @@ function initSwipeHandler(){
|
||||||
document.querySelectorAll( '#sidebar *' ).forEach( function(e){ e.addEventListener("touchend", handleEndX); }, false);
|
document.querySelectorAll( '#sidebar *' ).forEach( function(e){ e.addEventListener("touchend", handleEndX); }, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function clearHistory() {
|
||||||
|
var visitedItem = baseUriFull + 'visited-url/'
|
||||||
|
for( var item in sessionStorage ){
|
||||||
|
if( item.substring( 0, visitedItem.length ) === visitedItem ){
|
||||||
|
sessionStorage.removeItem( item );
|
||||||
|
var url = item.substring( visitedItem.length );
|
||||||
|
// in case we have `relativeURLs=true` we have to strip the
|
||||||
|
// relative path to root
|
||||||
|
url = url.replace( /\.\.\//g, '/' ).replace( /^\/+\//, '/' );
|
||||||
|
jQuery('[data-nav-id="' + url + '"]').removeClass('visited');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function initHistory() {
|
||||||
|
var visitedItem = baseUriFull + 'visited-url/'
|
||||||
|
sessionStorage.setItem(visitedItem+jQuery('body').data('url'), 1);
|
||||||
|
|
||||||
|
// loop through the sessionStorage and see if something should be marked as visited
|
||||||
|
for( var item in sessionStorage ){
|
||||||
|
if( item.substring( 0, visitedItem.length ) === visitedItem && sessionStorage.getItem( item ) == 1 ){
|
||||||
|
var url = item.substring( visitedItem.length );
|
||||||
|
// in case we have `relativeURLs=true` we have to strip the
|
||||||
|
// relative path to root
|
||||||
|
url = url.replace( /\.\.\//g, '/' ).replace( /^\/+\//, '/' );
|
||||||
|
jQuery('[data-nav-id="' + url + '"]').addClass('visited');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function scrollToActiveMenu() {
|
function scrollToActiveMenu() {
|
||||||
window.setTimeout(function(){
|
window.setTimeout(function(){
|
||||||
var e = document.querySelector( '#sidebar ul.topics li.active a' );
|
var e = document.querySelector( '#sidebar ul.topics li.active a' );
|
||||||
|
@ -732,16 +762,7 @@ jQuery(function() {
|
||||||
initCodeClipboard();
|
initCodeClipboard();
|
||||||
restoreTabSelections();
|
restoreTabSelections();
|
||||||
initSwipeHandler();
|
initSwipeHandler();
|
||||||
|
initHistory();
|
||||||
jQuery('[data-clear-history-toggle]').on('click', function() {
|
|
||||||
for( var item in sessionStorage ){
|
|
||||||
if( item.substring( 0, baseUriFull.length ) === baseUriFull ){
|
|
||||||
sessionStorage.removeItem( item );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
location.reload();
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
|
|
||||||
var ajax;
|
var ajax;
|
||||||
jQuery('[data-search-input]').on('input', function() {
|
jQuery('[data-search-input]').on('input', function() {
|
||||||
|
@ -798,20 +819,6 @@ jQuery(function() {
|
||||||
|
|
||||||
$('#topbar a:not(:has(img)):not(.btn)').addClass('highlight');
|
$('#topbar a:not(:has(img)):not(.btn)').addClass('highlight');
|
||||||
$('#body-inner a:not(:has(img)):not(.btn):not(a[rel="footnote"])').addClass('highlight');
|
$('#body-inner a:not(:has(img)):not(.btn):not(a[rel="footnote"])').addClass('highlight');
|
||||||
|
|
||||||
var visitedItem = baseUriFull + 'visited-url/'
|
|
||||||
sessionStorage.setItem(visitedItem+jQuery('body').data('url'), 1);
|
|
||||||
|
|
||||||
// loop through the sessionStorage and see if something should be marked as visited
|
|
||||||
for( var item in sessionStorage ){
|
|
||||||
if( item.substring( 0, visitedItem.length ) === visitedItem && sessionStorage.getItem( item ) == 1 ){
|
|
||||||
var url = item.substring( visitedItem.length );
|
|
||||||
// in case we have `relativeURLs=true` we have to strip the
|
|
||||||
// relative path to root
|
|
||||||
url = url.replace( /\.\.\//g, '/' ).replace( /^\/+\//, '/' );
|
|
||||||
jQuery('[data-nav-id="' + url + '"]').addClass('visited');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
jQuery.extend({
|
jQuery.extend({
|
||||||
|
|
Loading…
Reference in a new issue