Поймать ошибку window.open () - PullRequest
0 голосов
/ 05 июля 2018

Я открываю загрузку файла из удаленного API на своей веб-странице через window.open(). API (сервер Flask) обрабатывает ошибки и возвращает сообщение об ошибке, если есть внутренняя ошибка сервера, например:

@app.errorhandler(502) //all other errors are handled the same way, including 500, etc.
@crossdomain(origin='*')
def bad_gateway_error(error):
    return "Bad Gateway Error - Please make sure you're using a properly formatted file! Details: " + str(error), 200

Я хочу отобразить эту ошибку на своем сайте вместо перенаправления на страницу с ошибкой. Я пытаюсь поймать это через:

try {
    window.open("https://API/receivedoc?timestamp="+timestamp,"_self")
} catch(e) {
    filerootdiv.querySelector('.output').innerHTML = String(e);
}

Это, однако, ничего не делает (проверено в Chrome). Как я могу уловить ошибку, когда я использую window.open? Я полагаю, это может быть связано с тем, что при обработке ошибок я возвращаю сообщение 200, так что возвращаемая строка фактически возвращается, а не просто происходит сбой сервера (это должно происходить таким образом, поскольку он прекрасно работает со всеми другими ошибками, когда я ' я не пытаюсь вернуть файл). Проблема в том, что я не могу сказать, будет ли запрос API возвращать файл или строку перед выполнением window.open().

UPDATE

Я пытался реализовать:

let new_window = window.open("https://flaskmin.run.aws-usw02-pr.ice.predix.io/receivedoc?timestamp="+timestamp,"_self")
newWindow.onerror = function() {
  filerootdiv.querySelector('.output').innerHTML = "Error!";

Однако, это все еще только открывает новое окно с ошибкой. Я думаю, это из-за обработки ошибок на стороне сервера (я не могу это изменить). Могу ли я как-то проверить содержимое new_window перед перенаправлением на него, и просто не открывать его, если это просто строка, содержащая слово «error»?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...