Skip to content

Instantly share code, notes, and snippets.

@tessguefen
Created October 17, 2017 22:14
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tessguefen/46db53f968df1baedb340350e37c7487 to your computer and use it in GitHub Desktop.
Save tessguefen/46db53f968df1baedb340350e37c7487 to your computer and use it in GitHub Desktop.
Add critical css files to /critical_css/
<mvt:if expr="g.request_cookies:critical_css NE 1 AND g.Screen CIN '|SFNT|CTGY|PLST|PROD|'">
<script>!function(a){"use strict";var b=function(b,c,d){function j(a){return e.body?a():void setTimeout(function(){j(a)})}function l(){f.addEventListener&&f.removeEventListener("load",l),f.media=d||"all"}var g,e=a.document,f=e.createElement("link");if(c)g=c;else{var h=(e.body||e.getElementsByTagName("head")[0]).childNodes;g=h[h.length-1]}var i=e.styleSheets;f.rel="stylesheet",f.href=b,f.media="only x",j(function(){g.parentNode.insertBefore(f,c?g:g.nextSibling)});var k=function(a){for(var b=f.href,c=i.length;c--;)if(i[c].href===b)return a();setTimeout(function(){k(a)})};return f.addEventListener&&f.addEventListener("load",l),f.onloadcssdefined=k,k(l),f};"undefined"!=typeof exports?exports.loadCSS=b:a.loadCSS=b}("undefined"!=typeof global?global:this);
</script>
<noscript><link href="&mvt:global:theme_path;/css/all.min.css" rel="stylesheet" type="text/css" defer="defer"></noscript>
<mvt:if expr="g.Screen EQ 'SFNT'">
<mvt:assign name="l.settings:critical_css_loaded" value="'sfnt'" />
<mvt:assign name="l.critical_css_check" value="file_read( '/mm5/' $ g.theme_path $ '/css/critical_css/sfnt.css', 'script', l.settings:sfnt_css )" />
<mvt:assign name="l.settings:sfnt_css" value="glosub( l.settings:sfnt_css, '../', g.theme_path $ '/' )" />
<style id="critical_css">&mvt:sfnt_css;</style>
<mvt:elseif expr="g.Screen EQ 'CTGY' OR g.Screen EQ 'PLST'">
<mvt:assign name="l.settings:critical_css_loaded" value="'ctgy'" />
<mvt:assign name="l.critical_css_check" value="file_read( '/mm5/' $ g.theme_path $ '/css/critical_css/ctgy.css', 'script', l.settings:ctgy_css )" />
<mvt:assign name="l.settings:ctgy_css" value="glosub( l.settings:ctgy_css, '../', g.theme_path $ '/' )" />
<style id="critical_css">&mvt:ctgy_css;</style>
<mvt:elseif expr="g.Screen EQ 'PROD'">
<mvt:assign name="l.settings:critical_css_loaded" value="'prod'" />
<mvt:assign name="l.critical_css_check" value="file_read( '/mm5/' $ g.theme_path $ '/css/critical_css/prod.css', 'script', l.settings:prod_css )" />
<mvt:assign name="l.settings:prod_css" value="glosub( l.settings:prod_css, '../', g.theme_path $ '/' )" />
<style id="critical_css">&mvt:prod_css;</style>
</mvt:if>
<script>
function onloadCSS(a,b){function d(){!c&&b&&(c=!0,b.call(a))}var c;a.addEventListener&&a.addEventListener("load",d),a.attachEvent&&a.attachEvent("onload",d),"isApplicationInstalled"in navigator&&"onloadcssdefined"in a&&a.onloadcssdefined(d)}
function createCookie(a,b,c){var d="";if(c){var e=new Date;e.setTime(e.getTime()+24*c*60*60*1e3),d="; expires="+e.toUTCString()}document.cookie=a+"="+b+d+"; path=/"}
loadCSS( '&mvt:global:theme_path;/css/main.min.css' );
onloadCSS(critical_css, function() {
createCookie('critical_css', '1', 100);
});
</script>
<mvt:else>
<link href="&mvt:global:theme_path;/css/main.min.css" rel="stylesheet" type="text/css" defer="defer">
</mvt:if>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment