From 45906fca0bff2ae9023535219e92dc366ba5a03e Mon Sep 17 00:00:00 2001 From: Luke Childs Date: Tue, 20 Sep 2016 21:59:57 +0100 Subject: [PATCH] variable space optimisations Uglify.js will optimise these even further --- public/assets/enhancements.js | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/public/assets/enhancements.js b/public/assets/enhancements.js index 8665970..04e16c0 100644 --- a/public/assets/enhancements.js +++ b/public/assets/enhancements.js @@ -1,15 +1,20 @@ (function() { + // Space optimisations + var doc = document; + var elem = doc.querySelector.bind(doc); + var create = doc.createElement.bind(doc); + // Run callback when DOM is ready function DOMReady(fn) { // Run now if DOM has already loaded as we're loading async - if(['interactive', 'complete'].indexOf(document.readyState) >= 0) { + if(['interactive', 'complete'].indexOf(doc.readyState) >= 0) { fn(); // Otherwise wait for DOM } else { - document.addEventListener('DOMContentLoaded', fn); + doc.addEventListener('DOMContentLoaded', fn); } } @@ -41,7 +46,7 @@ } })(), inlineSVG: (function() { - var div = document.createElement('div'); + var div = create('div'); div.innerHTML = ''; return ( typeof SVGRect != 'undefined' @@ -49,8 +54,8 @@ && div.firstChild.namespaceURI ) == 'http://www.w3.org/2000/svg'; })(), - querySelector: typeof document.querySelector === 'function', - classList: 'classList' in document.createElement('div') + querySelector: typeof doc.querySelector === 'function', + classList: 'classList' in create('div') }); // Favourite nodes @@ -110,7 +115,7 @@ xhr.addEventListener('load', function() { // Create heart SVG elem - var div = document.createElement('div'); + var div = create('div'); div.innerHTML = xhr.responseText; var heartEl = div.firstChild; @@ -148,7 +153,7 @@ // Then inject into DOM when it's ready DOMReady(function() { - var titleEl = document.querySelector('h2.node-title'); + var titleEl = elem('h2.node-title'); if(titleEl) { titleEl.insertBefore(heartEl, titleEl.firstChild); } @@ -157,11 +162,11 @@ // Inject menu button into DOM DOMReady(function() { - var menuButton = document.createElement('div'); + var menuButton = create('div'); menuButton.classList.add('menu'); menuButton.innerHTML = '☰'; - menuButton.style.height = document.querySelector('.title').offsetHeight + 'px'; - document.querySelector('header .wrapper').appendChild(menuButton); + menuButton.style.height = elem('.title').offsetHeight + 'px'; + elem('header .wrapper').appendChild(menuButton); }); } }; @@ -177,9 +182,9 @@ if( /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream - && document.body.classList + && doc.body.classList ) { - document.body.classList.add('ios'); + doc.body.classList.add('ios'); } }); }