2012-07-28 13 views
5

Tengo una página web donde el usuario tiene la posibilidad de mostrar los términos y condiciones sin tener que volver a cargar la página, a través de AJAX. Eso, en sí mismo, no es un problema, sin embargo, también estoy tratando de impulsar un estado de historia.Historial de IE push state

Eso funciona bien en la mayoría de los navegadores, excepto en IE. Por alguna razón inexplicable, allí, el contenido se carga a través de AJAX, pero también se abre una nueva pestaña con la página anterior. ¿Cómo puedo arreglar esto?

Puede ver el ejemplo en esta página web (http://galaxy-battle.de), intente hacer clic en "T & Cs" en la casilla "Unirse".

+0

¿Puede mostrarnos el código que hace eso en un jsfiddle para que sea más fácil detectar un error y depurarlo? –

+0

Oh, lo siento, solo léelo. Voy a hacer uno en un momento. – arik

+0

Lo siento, pero no pude obtener el comando pushState para trabajar en jsfiddle, parece que lo están bloqueando. – arik

Respuesta

10

IE9 y menos doesn't support pushState. Tiene una excepción al llamar a la siguiente línea

window.history.pushState (null, null, pathFullPage);

SCRIPT438: El objeto no acepta la propiedad o método 'pushState' TERMS_AND_CONDITIONS, línea 62 caracteres 21

Puede ser interesante, probablemente en busca de algunas soluciones discutidas en Emulate/polyfill history.pushstate() in IE

2

vieja pero todavía vigente pregunta? . Solo quiero decir que recomendaría no para intentar emular pushState en IE.

En lugar de eso, se puede utilizar una detección de características:

  1. si history.pushState no es nulo (navegador soporta pushState), que lo utilice y cargar su contenido con javascript ingenioso

  2. si history.pushState es nulo (el navegador no es compatible con pushState), cambia url/sigue el enlace y hace un cambio de página completa

Por supuesto, esto significa que IE < = 9 usuarios no tendrán todas las animaciones geniales que tienen otros usuarios. Pero la pregunta que quiero hacer es: ¿quiere ver en los enlaces netos a su sitio web que contiene #?

Los usuarios pueden pensar que su aplicación es útil y pegar enlaces a ella en la web. Eso es genial, porque te trae un poco de jugo de google. Ahora, si ese usuario usa IE y usa history.js, el usuario pegará un enlace que contiene un hash.

Esto evitará la indexación correcta de las páginas públicas de su aplicación, y también se verá feo. Mi opinión personal es que tener una animación js o lightbox para usuarios de IE no vale la pena.

+1

Desafortunadamente, los requisitos comerciales no siempre están bajo el control directo del desarrollador. – jaydel