2011-08-25 11 views
7

Mi sitio web está disponible en http://visualise.ca/ y cuando carga una publicación haciendo clic en una miniatura, carga la publicación dentro de la página usando ajax. Al cerrar el mensaje que utiliza este código con el fin de cambiar la url de nuevo a http://visualise.ca/ sin recargar la página:Window.location.hash se necesita ayuda con la sintaxis

$("#close").live("click", function(event) { 
    $("#board").fadeOut("slow"); 
    $("#board-wrapper").slideUp("slow"); 
    $("html,body").delay(1000).animate({scrollTop: 0}, 300); 
    window.location.hash = ""; 
    window.history.pushState(null,null,site_url+"/"); 
    return false; 
}); 

pero en IE8 se cambia de nuevo a http://visualise.ca/# en lugar de http://visualise.ca/. ¿Hay alguna manera de corregir esto y asegurarse de que se cambie a http://visualise.ca/?

+2

IE8 no es compatible con la API de historial html5, considere utilizar una alternativa como https://github.com/balupton/history.js – anderssonola

Respuesta

1

Últimamente estoy haciendo mucha historia de Ajax. Estoy probando mi propia implementación, en la que navego por páginas y modales, y viceversa. Haciendo un buen progreso.

Desde el comienzo de las pruebas, he notado que el hash raíz; UNA VEZ CAMBIADO a la página inicial (donde todo comenzó), solo pierde el hash (#) si fue un botón BROWSER BACK. Si cambio el hash a '', SIEMPRE mostraré el/# al final.

Por lo que se refiere a IE8, no creo que haya ninguna solución pero usando el iFrame y, dado que todavía no he probado el IE8/iframe, no puedo comentarlo.

Para mi solución, estoy usando una mezcla de hash y control de comando puro. Debería tener la versión final completamente probada dentro de un par de semanas (ilusión).

Además, a quién le importa si se deja un hash/sharp al final de la url. NUNCA MIRÉ LA URL cuando llegué a un sitio web; Solo miro el contenido de la página. REALMENTE: me acaba de dar cuenta de que la url solo es importante cuando quiero copiarla y pegarla. Aparte de eso, NUNCA lo miro.

0
window.location = window.location.href.replace(/#.*/, ""); 

Esto funcionará para IE.

+1

Esto vuelve a cargar la página. No debe. ;-) – Gab

0
$('#close').click(function(){ 

window.location = "http://visualise.ca/"; 

}); 
+1

Esto vuelve a cargar la página. No es bueno ;-) – Gab

3

¿Esto no lo detiene?

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script> 
<script> 
    $(document).ready(function() {  
    $(".testPhoto").click(function(event){ 
     event.stopPropagation(); 
     alert("do something"); 
     return false; 
    }); 
}); 
</script> 
<a class="testPhoto" href="#testPhoto" onclick="testPhoto">Test Photo</a> 
1

Cualquier cosa menos que IE9 se volverá a cargar la página sin el Hash terminando #. Mi sugerencia es verificar el IE y eliminar o borrar el contenido. Si quieres el camino exacto, tendrás que esquivar algunos IE Quirks.

if (jQuery.browser.msie && (parseInt(jQuery.browser.version) < 9)) { 
    window.location = 'http://visualise.ca"; 
    document.execCommand('stop'); 
} 
Cuestiones relacionadas