18ae428e0fb7feea16d79853f29447469a93bedffKristian Monsenvar fileXHREnabled = function() { 28ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen var xhr = new XMLHttpRequest(); 38ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen try { 48ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen xhr.onreadystatechange = function() {}; 58ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen xhr.onerror = function() {}; 68ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen xhr.open("GET", "nothing.xml", true); 78ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen xhr.send(null); 88ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen } catch (e) { 98ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen return false; 108ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen } 118ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen 128ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen xhr.abort(); 138ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen return true; 148ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen}(); 158ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen 168ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen// Regenerate page if we are passed the "?regenerate" search param 178ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen// or if the user-agent is chrome AND the document is being served 188ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen// from the file:/// scheme. 198ae428e0fb7feea16d79853f29447469a93bedffKristian Monsenif (window.location.search == "?regenerate" || 208ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen (navigator.userAgent.indexOf("Chrome") > -1) && 218ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen (window.location.href.match("^file:")) && 228ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen fileXHREnabled) { 238ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen 248ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen // Hide body content initially to minimize flashing. 258ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen document.write('<style id="hider" type="text/css">'); 268ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen document.write('body { display:none!important; }'); 278ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen document.write('</style>'); 288ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen 298ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen window.onload = window.renderPage; 308ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen 318ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen window.postRender = function() { 328ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen var elm = document.getElementById("hider"); 338ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen elm.parentNode.removeChild(elm); 348ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen 358ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen // Since populating the page is done asynchronously, the DOM doesn't exist 368ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen // when the browser tries to resolve any #anchors in the URL. So we reset 378ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen // the URL once we're done, which forces the browser to scroll to the anchor 388ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen // as it normally would. 398ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen if (location.hash.length > 1) 408ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen location.href = location.href; 418ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen } 428ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen} else if ((navigator.userAgent.indexOf("Chrome") > -1) && 438ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen (window.location.href.match("^file:")) && 448ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen !fileXHREnabled) { 458ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen window.onload = function() { 468ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen // Display the warning to use the --allow-file-access-from-files. 478ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen document.getElementById("devModeWarning").style.display = "block"; 488ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen } 498ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen} 50