From 8e086a0cf8e8c3aa31f0b700399bccc4f735cd89 Mon Sep 17 00:00:00 2001 From: Joris Guyonvarch Date: Sat, 7 Mar 2015 20:20:35 +0100 Subject: Adding a spinner to cursor when loading a page instead of putting the page to blank --- router.js | 42 +++++++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 17 deletions(-) (limited to 'router.js') diff --git a/router.js b/router.js index 234c50b..8af98ab 100644 --- a/router.js +++ b/router.js @@ -1,5 +1,30 @@ (function () { + this.addEventListener('hashchange', router); + this.addEventListener('load', router); + + function router() { + var url = location.hash.slice(2) || 'presentation'; + var contentElement = document.getElementById('content'); + var htmlElement = document.querySelector('html'); + addClass(htmlElement, 'waitCursor'); + fetchFile('Pages/' + url + '.md', function(contentMd) { + removeClass(htmlElement, 'waitCursor'); + contentElement.innerHTML = markdown.toHTML(contentMd); + }, function() { + var notFoundPage = '

Page non trouvée

Retour à l\'accueil'; + contentElement.innerHTML = notFoundPage; + }); + } + + function addClass(element, myClass) { + element.className = element.className + ' waitCursor'; + } + + function removeClass(element, myClass) { + element.className = element.className.replace(new RegExp('(?:^|\\s)' + myClass + '(?!\\S)') , ''); + } + function fetchFile(url, successHandler, errorHandler) { var xhr = typeof XMLHttpRequest != 'undefined' ? new XMLHttpRequest() @@ -26,21 +51,4 @@ } }; - function router() { - var url = location.hash.slice(2) || 'presentation'; - var contentElement = document.getElementById('content'); - contentElement.style.height = contentElement.offsetHeight + 'px'; - contentElement.innerHTML = ''; - fetchFile('Pages/' + url + '.md', function(contentMd) { - contentElement.style.height = 'auto'; - contentElement.innerHTML = markdown.toHTML(contentMd); - }, function() { - var notFoundPage = '

Page non trouvée

Retour à l\'accueil'; - contentElement.innerHTML = notFoundPage; - }); - } - - this.addEventListener('hashchange', router); - this.addEventListener('load', router); - })(); -- cgit v1.2.3