2014-12-20 4 views
4

Возможно ли перейти на другую страницу, чем текущая window.location.href перезагрузки?перейти на другую страницу при перезагрузке

Я пытаюсь сделать это с помощью обработчика события jQuery в окне, но он, похоже, не работает.

$(window).on('reload', function(event){ 
    event.preventDefault(); 
    var currentURL = window.location.href; 
    window.location.href = currentURL.split('!')[0]; 
}); 
+2

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

+3

Событие «перезагрузки» отсутствует. – epascarello

+0

Вы должны использовать событие разгрузки и проверить, была ли ранее загружена страница. Вы можете увидеть более подробную информацию здесь: http://stackoverflow.com/questions/10400182/how-to-check-page-is-reloading-or-refreshing-using-jquery-or-javascript – Greg

ответ

-1

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

Вы можете использовать код ниже.

function setCookie(c_name, value, exdays) { 
      var exdate = new Date(); 
      exdate.setDate(exdate.getDate() + exdays); 
      var c_value = escape(value) + ((exdays == null) ? "" : "; expires=" + exdate.toUTCString()); 
      document.cookie = c_name + "=" + c_value; 
     } 

function getCookie(c_name) { 
    var i, x, y, ARRcookies = document.cookie.split(";"); 
    for (i = 0; i < ARRcookies.length; i++) { 
     x = ARRcookies[i].substr(0, ARRcookies[i].indexOf("=")); 
     y = ARRcookies[i].substr(ARRcookies[i].indexOf("=") + 1); 
     x = x.replace(/^\s+|\s+$/g, ""); 
     if (x == c_name) { 
      return unescape(y); 
     } 
    } 
} 

function DeleteCookie(name) { 
     document.cookie = name + '=; expires=Thu, 01-Jan-70 00:00:01 GMT;'; 
    } 



$(window).load(function() { 
//if IsRefresh cookie exists 
var IsRefresh = getCookie("IsRefresh"); 
if (IsRefresh != null && IsRefresh != "") { 
    //cookie exists then you refreshed this page(F5, reload button or right click and reload) 
    DeleteCookie("IsRefresh"); 
    //Redirect to new URL 
} 
else { 
    //cookie doesnt exists then you landed on this page for first time 
    setCookie("IsRefresh", "true", 1); 
} 
}) 
+0

Хотя эта ссылка может ответить на вопрос, лучше включить основные части ответа здесь и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. – Makyen

+0

Спасибо Makyen, я буду иметь в виду. updated –

0

Предполагая, что оригинальный URL был в форме <orig_url>?|<new_url> вы могли бы сделать это на кнопку мыши

$(document).ready(function() { 
    $('.btn').on('click', function() { 
     // Original assumption is the original URL was of the form <orig_url>?|<new_url> 

     // faking our data here for this example 
     var currentURL = window.location.href + '|http://www.google.com' ; 

     console.log(currentURL); 
     var urls = currentURL.split("|"); 
     console.log(urls[0]); 
     console.log(urls[1]); 
     $("head").append("<META HTTP-EQUIV='Refresh' CONTENT='0;URL=" + urls[1] + "'>"); 
    }); 
}); 
+0

Я думаю, что это слишком сложно. Вот почему я пытаюсь это сделать: я использую историю api, чтобы манипулировать URL-адресом на страницах, которые не существуют. Поэтому при перезагрузке я хочу, чтобы он перешел на начальную страницу, которая существует. – wordSmith

0

Попробуйте one.It будет исправлена ​​проблема.

$(window).load(function() 
     { 
      var your_url   = 'your_page.php'; 
      window.location.href = your_url; 
     }); 
+0

Почему документ готов и загрузка окна? – putvande

+0

@putvande вы используете готовый документ или загружаете окно при обновлении страницы. – Raham

+0

Итак, почему, если вы не согласны, вы изменили свой ответ? – putvande

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