From 7a9604a3c918ce5fad1010e9e95fbf961a95420d Mon Sep 17 00:00:00 2001 From: rlei Date: Wed, 14 Dec 2016 10:41:03 -0600 Subject: [PATCH] Workaround for slices "Not Found" issue in IE <= 11 (#1821) This should fix issue #1339. IE 11 and lower has a long standing issue: out-of-document element's pathname has no leading '/'. See https://connect.microsoft.com/IE/feedbackdetail/view/1002846/pathname-incorrect-for-out-of-document-elements And Superset's Slice.jsonEndpoint() method relies on pathname() to build JSON API URL for slices: ```javascript jsonEndpoint() { const parser = document.createElement('a'); parser.href = data.json_endpoint; let endpoint = parser.pathname + this.querystring(); endpoint += '&json=true'; endpoint += '&force=' + this.force; return endpoint; }, ``` `parser` above is exactly an out-of-document element. Therefore when running in IE <= 11, Superset would build wrong JSON endpoint URLs, hence the 404 errors for loading data for slices. This commit adds a simple workaround when leading '/' is missing in the value returned by pathname(). --- superset/assets/javascripts/modules/superset.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/superset/assets/javascripts/modules/superset.js b/superset/assets/javascripts/modules/superset.js index ac1def0b026a..8a2071aed14d 100644 --- a/superset/assets/javascripts/modules/superset.js +++ b/superset/assets/javascripts/modules/superset.js @@ -107,6 +107,11 @@ const px = function () { const parser = document.createElement('a'); parser.href = data.json_endpoint; let endpoint = parser.pathname + this.querystring(); + if (endpoint.charAt(0) !== '/') { + // Known issue for IE <= 11: + // https://connect.microsoft.com/IE/feedbackdetail/view/1002846/pathname-incorrect-for-out-of-document-elements + endpoint = '/' + endpoint; + } endpoint += '&json=true'; endpoint += '&force=' + this.force; return endpoint;