diff --git a/js/push.js b/js/push.js index 6aa5398..772a617 100644 --- a/js/push.js +++ b/js/push.js @@ -209,6 +209,8 @@ options.container = options.container || options.transition ? document.querySelector('.content') : document.body; + var isFileProtocol = /^file:/.test(window.location.protocol); + for (key in bars) { if (bars.hasOwnProperty(key)) { options[key] = options[key] || document.querySelector(bars[key]); @@ -221,17 +223,21 @@ } xhr = new XMLHttpRequest(); - xhr.open('GET', options.url, true); - xhr.setRequestHeader('X-PUSH', 'true'); + if (isFileProtocol) { + xhr.open('GET', options.url, false); + } else { + xhr.open('GET', options.url, true); + xhr.setRequestHeader('X-PUSH', 'true'); - xhr.onreadystatechange = function () { - if (options._timeout) { - clearTimeout(options._timeout); - } - if (xhr.readyState === 4) { - xhr.status === 200 ? success(xhr, options) : failure(options.url); - } - }; + xhr.onreadystatechange = function () { + if (options._timeout) { + clearTimeout(options._timeout); + } + if (xhr.readyState === 4) { + xhr.status === 200 ? success(xhr, options) : failure(options.url); + } + }; + } if (!PUSH.id) { cacheReplace({ @@ -249,6 +255,14 @@ xhr.send(); + if (isFileProtocol) { + if (xhr.status === 0) { + success(xhr, options); + } else { + failure(options.url); + } + } + if (xhr.readyState && !options.ignorePush) { cachePush(); }