diff --git a/index.js b/index.js index 7794b1a..da4aa8f 100644 --- a/index.js +++ b/index.js @@ -159,7 +159,7 @@ Pjax.prototype = { // Do the request options.requestOptions.timeout = this.options.timeout - this.doRequest(href, options.requestOptions, function(html) { + this.doRequest(href, options.requestOptions, function(html, request) { // Fail if unable to load HTML via AJAX if (html === false) { trigger(document,"pjax:complete pjax:error", options) @@ -170,6 +170,18 @@ Pjax.prototype = { // Clear out any focused controls before inserting new page contents. document.activeElement.blur() + if (request.responseURL) { + if (href !== request.responseURL) { + href = request.responseURL + } + } + else if (request.getResponseHeader("X-PJAX-URL")) { + href = request.getResponseHeader("X-PJAX-URL") + } + else if (request.getResponseHeader("X-XHR-Redirected-To")) { + href = request.getResponseHeader("X-XHR-Redirected-To") + } + try { this.loadContent(html, options) } diff --git a/lib/request.js b/lib/request.js index 299a136..9a4e5b8 100644 --- a/lib/request.js +++ b/lib/request.js @@ -15,6 +15,11 @@ module.exports = function(location, options, callback) { } } + request.onerror = function(e) { + console.log(e) + callback(null, request) + } + request.ontimeout = function() { callback(null, request) }