Подтвердить что ты не робот

Как запустить jQuery или JavaScript до начала загрузки страницы

У меня есть script, который я хочу запустить до начала загрузки страницы. script проверяет значение переменной и в зависимости от значения перенаправляет пользователя на новую страницу.

Я могу успешно проверить переменную и перенаправить при необходимости, но страница все еще загружается и отображает пустую страницу, а затем быстро перенаправляется на другую страницу. Я не хочу, чтобы эта пустая страница отображалась на странице вообще перед перенаправлением.

Спасибо, Ver

4b9b3361

Ответ 1

<head>
  <script>
    if(condition){
      window.location = "http://yournewlocation.com";
    }
  </script>
</head>
<body>
  ...
</body>

Это заставит проверку состояния и изменение местоположения URL до того, как страница отобразит что-либо. Стоит отметить, что вы специально захотите сделать это до вызова библиотеки jQuery, чтобы можно было избежать загрузки этой библиотеки. Некоторые могут также утверждать, что это было бы лучше помещено в методе обертки и вызвано так вот, этот метод:

function redirectHandler(condition, url){
  if(condition){
    window.location = url;
  }else{
    return false;
  }
}

Это позволит вам проверять несколько условий и перенаправлять их в разные местоположения на основе:

if(redirectHandler(nologgedin, "/login.php")||redirectHandler(adminuser, "/admin.php"));

или если вам нужно только запустить его один раз и только один раз, но вам не нравится иметь ничего в глобальном пространстве имен:

(function(condition, url){
  if(condition)window.location=url;
})(!loggedin, "/login.asp");

Ответ 2

Возможно, вы используете:

$(document).ready(function(){
   // Your code here
 });

Попробуйте это вместо:

window.onload = function(){  }

Ответ 3

Если вы не хотите, чтобы что-то отображалось перед перенаправлением, вам нужно будет использовать скрипты на стороне сервера для выполнения задачи до того, как страница будет подана. Страница уже загрузилась к тому моменту, когда ваш Javascript будет выполнен на стороне .

Если Javascript - ваш единственный вариант, лучше всего сделать ваш script первый .js файл, включенный в <head> вашего документа.

Вместо Javascript я рекомендую настроить логику перенаправления в конфигурации сервера Apache или nginx.

Ответ 4

Не используйте $(document).ready() просто поместите script непосредственно в раздел главы страницы. Страницы обрабатываются сверху вниз, поэтому сначала обрабатываются объекты вверху.

Ответ 5

Скрыть тело с помощью css, затем показать его после загрузки страницы:

CSS

html { visibility:hidden; }

Javascript

$(document).ready(function() {
  document.getElementsByTagName("html")[0].style.visibility = "visible";
});

Страница будет пуста, показывая все содержимое при загрузке страницы, не будет отображаться содержимое, отсутствует просмотр изображений и т.д.

Ответ 6

Это должно сделать трюк:

window.onload = function(event) {
    event.stopPropagation(true);
    window.location.href="http://www.google.com";
};

Удачи  ;)

Ответ 7

Попробуйте выгрузить событие. Событие разгрузки отправляется в элемент окна, когда пользователь переходит от страницы.

$( window ).unload(function() {
    //do something
});