istanbul-js
Version:
use localStorage to cache script
1 lines • 1.04 kB
JavaScript
(function(e){var t="js_script_cache",r="js_script_version",a="js_script_content";var n=function(e){var t=e.split(".");var r=t[t.length-2];var a=t[t.length-4];if(r.indexOf("/")!==-1){r=a=""}return{currVersion:r,scriptName:a}};var c=function(e,n,c){var s=document.getElementsByTagName("body")[0];var i=new XMLHttpRequest;i.open("GET",n);i.onreadystatechange=function(){if(i.readyState===4&&i.status===200){try{e.innerHTML=i.responseText;s.appendChild(e);if(c.scriptName){var n=JSON.parse(localStorage.getItem(t))||{};var o=n[c.scriptName]={};o[r]=c.currVersion;o[a]=i.responseText;localStorage.setItem(t,JSON.stringify(n))}}catch(e){}}};i.send()};var s=function(e){var s,i=document.createElement("script"),o=document.getElementsByTagName("body")[0],p=n(e),m=JSON.parse(localStorage.getItem(t)),d=m&&m[p.scriptName]&&m[p.scriptName][r]||"";i.type="text/javascript";if(d&&p.currVersion===d){try{s=m[p.scriptName][a];i.innerHTML=s;o.appendChild(i)}catch(t){c(i,e,p)}}else{c(i,e,p)}};e.forEach(function(e){s(e)})})(["${data.vendor}","${data.page}"]);