У меня есть требования к устаревшему сайту, на котором я не могу перепроектировать экраны, я не могу использовать теги заголовка без кэша, и я должен запретить пользователю видеть кэшированные экраны после того, как они вышли из системы и нажали кнопку «Назад».Остановить веб-страницу до загрузки до завершения вызова JQuery AJAX?
Я почти к решению (см бит кода ниже)
При загрузке страницы, я использую функцию JQuery AJAX для вызова веб-приложение и посмотреть, если пользователь все еще находится в. Если нет, пользователь перенаправляется на экран входа в системе
<html>
<head>
<!-- all the usual header stuff, plus links to the jQuery libaries, first script tag on page below -->
<script language = "javascript">
$.get("/acme/confirm_authentication",function(data){
if(data != "confirmed"){
location.href = "logout";
}
});
</script>
</head>
<body>
blah blah blah
</body>
</html>
большой вещь, которую я не люблю об этом обходном пути является то, что на долю секунды я могу содержание, прежде чем функция JQuery завершается.
Есть ли способ сохранить страницу от загрузки/рендеринга до тех пор, пока функция JQuery AJAX не остановится?
Благодаря
Update: Ответ:
Я изменил принятый ответ ниже, чтобы включить "кэш: ложный" вариант. В Firefox и Chrome кешированные копии страницы, которые были достигнуты с помощью кнопки «Назад», будут запускать .ajax(), но будут использовать кешированную копию переменной «данные», которая даст мне устаревший ответ.
$.ajax({
url: "/acme/confirm_authentication",
async:false,
cache: false,
success: function(data) {
if(data != "confirmed"){
location.href = "logout";
}
}
});
ИМХО, я чувствую, что вам следует избегать блокировки пользовательского интерфейса любой ценой. «Ожидание» для загрузки может действительно разрушить сайт и чувства человека к указанному сайту. – Dom
Из любопытства: если пользователь отключает Javascript, может ли он получить доступ к контенту без входа? –
Вам нужно ** сделать это на сервере вместо этого. – SLaks