(function () { this.addEventListener('hashchange', router); this.addEventListener('load', router); function router() { const url = location.hash.slice(2) || 'presentation'; const contentElement = document.getElementById('content'); const htmlElement = document.querySelector('html'); addClass(htmlElement, 'waitCursor'); fetchFile('Pages/' + url + '.md', function(contentMd) { removeClass(htmlElement, 'waitCursor'); contentElement.innerHTML = markdown.toHTML(contentMd); }, function() { const notFoundPage = '

Page non trouvée

Retour à l\'accueil'; contentElement.innerHTML = notFoundPage; }); } function addClass(element, myClass) { element.className = element.className + ' ' + myClass; } function removeClass(element, myClass) { element.className = element.className.replace(new RegExp('(?:^|\\s)' + myClass + '(?!\\S)') , ''); } function fetchFile(url, successHandler, errorHandler) { const xhr = typeof XMLHttpRequest != 'undefined' ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); xhr.open('get', url, true); xhr.responseType = 'text'; xhr.onreadystatechange = function() { if (xhr.readyState == 4) { const status = xhr.status; if (status === 200 || status === 0) { const data = xhr.responseText; successHandler && successHandler(data); } else { errorHandler && errorHandler(status); } } }; try { xhr.send(); } catch(err) { errorHandler && errorHandler(err); } }; })();