Add checks for XHR redirects

Fixes #7

This checks for redirects by looking for the following, in sequence:
- XMLHttpRequest.responseURL
- the X-PJAX-URL header (like jquery-pjax)
- the X-XHR-Redirected-To header (like Turbolinks)
This commit is contained in:
Behind The Math
2018-01-10 00:12:53 -05:00
parent cb9c37fcb3
commit d1184aead6
2 changed files with 18 additions and 1 deletions

View File

@@ -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)
}