From 1e021bc5e0681cdb7323f9ebad0759cb50e9b03f Mon Sep 17 00:00:00 2001 From: artemave Date: Mon, 21 Apr 2014 22:50:30 +0100 Subject: [PATCH] push.js: add file:// urls support Fix for Android Android was not working because the status is set to 200, not 0. --- js/push.js | 40 +++++++++++++++++++++++++++------------- 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/js/push.js b/js/push.js index 9981166..96dd476 100644 --- a/js/push.js +++ b/js/push.js @@ -213,6 +213,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]); @@ -225,21 +227,25 @@ } 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) { - if (xhr.status === 200) { - success(xhr, options); - } else { - failure(options.url); + xhr.onreadystatechange = function () { + if (options._timeout) { + clearTimeout(options._timeout); } - } - }; + if (xhr.readyState === 4) { + if (xhr.status === 200) { + success(xhr, options); + } else { + failure(options.url); + } + } + }; + } if (!PUSH.id) { cacheReplace({ @@ -259,6 +265,14 @@ xhr.send(); + if (isFileProtocol) { + if (xhr.status === 0 || xhr.status === 200) { + success(xhr, options); + } else { + failure(options.url); + } + } + if (xhr.readyState && !options.ignorePush) { cachePush(); }