aboutsummaryrefslogtreecommitdiff
path: root/router.js
diff options
context:
space:
mode:
Diffstat (limited to 'router.js')
-rw-r--r--router.js42
1 files changed, 25 insertions, 17 deletions
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 = '<h1>Page non trouvée</h1><a href="#">Retour à l\'accueil</a>';
+ 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 = '<h1>Page non trouvée</h1><a href="#">Retour à l\'accueil</a>';
- contentElement.innerHTML = notFoundPage;
- });
- }
-
- this.addEventListener('hashchange', router);
- this.addEventListener('load', router);
-
})();