Как запустить jQuery или JavaScript до начала загрузки страницы
У меня есть script, который я хочу запустить до начала загрузки страницы. script проверяет значение переменной и в зависимости от значения перенаправляет пользователя на новую страницу.
Я могу успешно проверить переменную и перенаправить при необходимости, но страница все еще загружается и отображает пустую страницу, а затем быстро перенаправляется на другую страницу. Я не хочу, чтобы эта пустая страница отображалась на странице вообще перед перенаправлением.
Спасибо,
Ver
Ответы
Ответ 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
});