Add new 'hash: true' option which uses replaceState for url

Resolves #2211
This commit is contained in:
Anthony Sottile 2018-12-02 16:46:00 -08:00
parent 87d6af2cb4
commit fd6245bb28
2 changed files with 19 additions and 11 deletions

View File

@ -259,9 +259,12 @@ Reveal.initialize({
// Display the page number of the current slide
slideNumber: false,
// Push each slide change to the browser history
// Push each slide change to the browser history. Implies `hash: true`
history: false,
// Change the hash when changing slides -- impacts browser history with `history: true`
hash: false,
// Enable keyboard shortcuts for navigation
keyboard: true,

View File

@ -76,9 +76,12 @@
// Determine which displays to show the slide number on
showSlideNumber: 'all',
// Push each slide change to the browser history
// Push each slide change to the browser history. Implies `hash: true`
history: false,
// Change the hash when changing slides -- impacts browser history with `history: true`
hash: false,
// Enable keyboard shortcuts for navigation
keyboard: true,
@ -4114,18 +4117,20 @@
*/
function writeURL( delay ) {
if( config.history ) {
// Make sure there's never more than one timeout running
clearTimeout( writeURLTimeout );
// Make sure there's never more than one timeout running
clearTimeout( writeURLTimeout );
// If a delay is specified, timeout this call
if( typeof delay === 'number' ) {
writeURLTimeout = setTimeout( writeURL, delay );
}
else if( currentSlide ) {
// If a delay is specified, timeout this call
if( typeof delay === 'number' ) {
writeURLTimeout = setTimeout( writeURL, delay );
}
else if( currentSlide ) {
if ( config.history ) {
window.location.hash = locationHash();
}
else if ( config.hash ) {
window.history.replaceState(null, null, '#' + locationHash());
}
}
}