2013-07-02 6 views
0

Я использую следующий сценарий для перенаправления посетителей страницы на другую страницу при первом посещении, однако сначала он загружает страницу index.html, а затем запускает перенаправление. Может ли кто-нибудь указать мне, как я могу запустить этот скрипт до загрузки страницы?Как сделать триггер перенаправления страницы JS до загрузки страницы

<script type="text/javascript"> 
    function redirect(){ 
    var thecookie = readCookie('doRedirect'); 
    if(!thecookie){window.location = '/coming-soon.html'; 
    }} 
    function createCookie(name,value,days){if (days){ 
    var date = new Date();date.setTime(date.getTime()+(days*24*60*60*1000)); 
    var expires = "; expires="+date.toGMTString(); 
    } 
    else var expires = "";document.cookie = name+"="+value+expires+"; path=/"; 
    } 
    function readCookie(name){ 
    var nameEQ = name + "=";var ca = document.cookie.split(';'); 
    for(var i=0;i < ca.length;i++){ 
    var c = ca[i];while (c.charAt(0)==' ') c = c.substring(1,c.length); 
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);} 
    return null; 
    } 
    window.onload = function(){redirect();createCookie('doRedirect','true','1');} 
</script> 

(JS фрагмент кода используется здесь была взята из Stack Overflow: JS to redirect to a splash page on first visit)

Спасибо.

+0

не делайте этого в обратном вызове 'window.onload'. Просто поместите этот код в главный тег, затем браузер запустит его, насколько он его разобрал. Также вам лучше создать cookie перед перенаправлением, чтобы гарантировать его выполнение. – Tommi

+0

Чтобы уточнить, вы имеете в виду изменить последнюю строку на это? 'function() {redirect(); createCookie ('doRedirect', 'true', '1');}' – jasonbradberry

+0

Извините, не получите свой последний вопрос. Что это"? – Tommi

ответ

1

Вам не нужно ждать, пока загружается окно:

<script type="text/javascript"> 
    var thecookie = readCookie('doRedirect'); 
    if(!thecookie) { 
     createCookie('doRedirect','true','1'); 
     window.location = '/coming-soon.html'; 
    }; 
    function createCookie(name,value,days){ 
     // do work 
    } 
    function readCookie(name){ 
     // do work 
    } 
</script> 

Также Петр Б. сказал правильную вещь: на стороне сервера Перенаправление лучше в вашем случае.

+0

Спасибо, это сработало отлично. Поскольку это всего лишь краткосрочное решение, я буду придерживаться этого на данный момент, так как мне пока не нравится работа на стороне сервера, но буду помнить его в будущем. Очень признателен. – jasonbradberry

Смежные вопросы