2016-10-05 6 views
0

У меня есть следующий код, чтобы показать панель загрузки после, например, нажав на кнопку и сделать вызов Ajax:JavaScript: проверьте, было ли изменено окно.location.href

$(document).on("click", function (e) { 
     window.LoadingPanel.Show(); 
    }); 

После вызова Ajax следующего кода убеждается загрузки панель снова исчезает:

$(document).ajaxComplete(function() { 
     if (window.LoadingPanel != null) { 
      window.LoadingPanel.Hide(); 
     } 
    }); 

Но в некоторых случаях перенаправить на другую страницу в зависимости от результата вызова Ajax, установив window.location.href. В этом случае я хочу, чтобы функция ajaxComplete НЕ скрывала панель загрузки слишком рано, пока не было выполнено перенаправление.

Как я могу проверить функцию ajaxComplete, если window.location.href был изменен, и страница собирается перенаправить?

+0

если редирект означает загрузить новую полную страницу в браузере, что вы просите не может быть сделано. Каждая страница - это собственный экземпляр окна – charlietfl

+2

Почему бы просто не установить флаг, основанный на результате вашего вызова AJAX? Если это правда, скройте панель, иначе нет. –

ответ

1

Возможно, это не лучший способ решить эту проблему, но это то, о чем я могу думать сейчас.
1. создать переменный вызов isHide = true;
2. В вашем jax-вызове функция Onsuccess setHide = false, если скрытие не требуется.
3. в вашем ajaxComplete см следующие

$(document).ajaxComplete(function(e) { 
    if (window.LoadingPanel != null && isHide) { 
     window.LoadingPanel.Hide(); 
    } 
});