58 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
		
			Vendored
		
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
		
			Vendored
		
	
	
	
| // Kludge in HTML5 tag recognition in IE8
 | |
| document.createElement("section");
 | |
| document.createElement("article");
 | |
| 
 | |
| (function() {
 | |
|   if (!window.addEventListener) return;
 | |
|   var pending = false, prevVal = null;
 | |
| 
 | |
|   function updateSoon() {
 | |
|     if (!pending) {
 | |
|       pending = true;
 | |
|       setTimeout(update, 250);
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   function update() {
 | |
|     pending = false;
 | |
|     var marks = document.getElementById("nav").getElementsByTagName("a"), found;
 | |
|     for (var i = 0; i < marks.length; ++i) {
 | |
|       var mark = marks[i], m;
 | |
|       if (mark.getAttribute("data-default")) {
 | |
|         if (found == null) found = i;
 | |
|       } else if (m = mark.href.match(/#(.*)/)) {
 | |
|         var ref = document.getElementById(m[1]);
 | |
|         if (ref && ref.getBoundingClientRect().top < 50)
 | |
|           found = i;
 | |
|       }
 | |
|     }
 | |
|     if (found != null && found != prevVal) {
 | |
|       prevVal = found;
 | |
|       var lis = document.getElementById("nav").getElementsByTagName("li");
 | |
|       for (var i = 0; i < lis.length; ++i) lis[i].className = "";
 | |
|       for (var i = 0; i < marks.length; ++i) {
 | |
|         if (found == i) {
 | |
|           marks[i].className = "active";
 | |
|           for (var n = marks[i]; n; n = n.parentNode)
 | |
|             if (n.nodeName == "LI") n.className = "active";
 | |
|         } else {
 | |
|           marks[i].className = "";
 | |
|         }
 | |
|       }
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   window.addEventListener("scroll", updateSoon);
 | |
|   window.addEventListener("load", updateSoon);
 | |
|   window.addEventListener("hashchange", function() {
 | |
|     setTimeout(function() {
 | |
|       var hash = document.location.hash, found = null, m;
 | |
|       var marks = document.getElementById("nav").getElementsByTagName("a");
 | |
|       for (var i = 0; i < marks.length; i++)
 | |
|         if ((m = marks[i].href.match(/(#.*)/)) && m[1] == hash) { found = i; break; }
 | |
|       if (found != null) for (var i = 0; i < marks.length; i++)
 | |
|         marks[i].className = i == found ? "active" : "";
 | |
|     }, 300);
 | |
|   });
 | |
| })();
 | 
