Advertisement
Guest User

JS-Pushstate

a guest
Oct 9th, 2015
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.54 KB | None | 0 0
  1. (function(){
  2.  
  3. "use strict";
  4.  
  5. var container = document.querySelector('.scroll'),
  6. hrefs = document.querySelectorAll('a'),
  7. textWrapper = document.querySelector('.highlight'),
  8. content = document.querySelector('.content'),
  9. defaultTitle = "Gerson Perez";
  10.  
  11. function updateText(content){
  12. textWrapper.innerHTML = content;
  13. }
  14.  
  15. function requestContent(file){
  16. $('.content').load(file + ' .content');
  17. }
  18.  
  19. function removeCurrentClass(){
  20. for(var i = 0; i < hrefs.length; i++){
  21. hrefs[i].classList.remove('current');
  22. }
  23. }
  24.  
  25. function addCurrentClass(elem){
  26. removeCurrentClass();
  27. var element = document.querySelector("." + elem);
  28. element.classList.add('current');
  29. }
  30.  
  31. container.addEventListener('click', function(e){
  32. if(e.target != e.currentTarget){
  33. e.preventDefault();
  34. var data = e.target.getAttribute('data-name'),
  35. url = data + ".html";
  36. addCurrentClass(data);
  37. history.pushState(data, null, url);
  38. updateText(data);
  39. requestContent(url);
  40. document.title = data;
  41. }
  42. e.stopPropagation();
  43. }, false);
  44.  
  45.  
  46. window.addEventListener('popstate', function(e){
  47. var character = e.state;
  48.  
  49. if (character == null) {
  50. removeCurrentClass();
  51. textWrapper.innerHTML = " ";
  52. content.innerHTML = " ";
  53. document.title = defaultTitle;
  54. } else {
  55. updateText(character);
  56. requestContent(character + ".html");
  57. addCurrentClass(character);
  58. document.title = character;
  59. }
  60. })
  61. })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement