2012-01-17 41 views
10

Hago navegación con páginas pero este código no funciona, ¿cuál es el problema?window.location.replace() no funciona para redirigir el navegador

<script> 
$(document).ready(function() { 
$("body").keydown(function(event) { 
    if(event.keyCode == 37) { // left 
    window.location.replace("http://newsii.abudayah.com/photo/2)"; } 
    else if(event.keyCode == 39) { // right 
    window.location.replace("http://newsii.abudayah.com/photo/31)"; } 
}); 
}); 
</script> 
+16

Ninguna de las respuestas pareció notar que el corchete en cada una de las URL está dentro de las comillas, cuando debe estar afuera. De lo contrario, el uso del método de reemplazo es sintácticamente correcto. –

Respuesta

21

No utilice .replace() para esto, simplemente asigne el valor directamente.

Example

$("body").keydown(function(event) { 

    if(event.keyCode == 37) { // left 
     window.location = "http://newsii.abudayah.com/photo/2"; 
    } 
    else if(event.keyCode == 39) { // right 
     window.location = "http://newsii.abudayah.com/photo/31"; 
    } 

}); 
+4

Tengo que decir que una respuesta con jsfiddle debe valer 10 veces más que la misma respuesta sin. –

+0

De acuerdo ... Mientras eso no sea sarcasmo, estoy sintiendo. – jondavidjohn

+0

No, no es sarcasmo. Raramente me tomo el tiempo de hacer una jsfiddle, pero cuando veo una respuesta con una, creo que debería acostumbrarme. –

1

he usado esto y es un trabajo

$(document).ready(function() { 

    $(document).keydown(function(e) { 
     var url = false; 
     if (e.which == 37) { // Left arrow key code 
      url = $('.prev').attr('href'); 
     } 
     else if (e.which == 39) { // Right arrow key code 
      url = $('.next').attr('href'); 
     } 
     if (url) { 
      window.location = url; 
     } 
    }); 

}); 
13

su código tiene un error de sintaxis. Su final es entre paréntesis dentro de la cotización no fuera ...

Probar:

<script> 
$(document).ready(function() { 
$("body").keydown(function(event) { 
    if(event.keyCode == 37) { // left 
    window.location.replace("http://newsii.abudayah.com/photo/2"); } 
    else if(event.keyCode == 39) { // right 
    window.location.replace("http://newsii.abudayah.com/photo/31"); } 
}); 
}); 
</script> 

window.location.replace no es compatible con todos los navegadores. La asignación del valor de ubicación siempre es compatible. Sin embargo, la razón para usar reemplazar en lugar de asignar el valor de ubicación es que no desea que la url actual aparezca en el historial, o que se muestre cuando se usa el botón Atrás. Dado que esto no siempre es posible, sólo tiene que conformarse con lo que es posible:

<script> 
$(document).ready(function() { 
$("body").keydown(function(event) { 
    if(event.keyCode == 37) { // left 
    try { window.location.replace("http://newsii.abudayah.com/photo/2"); } 
    catch(e) { window.location = "http://newsii.abudayah.com/photo/2"; } 
    } 
    else if(event.keyCode == 39) { // right 
    try { window.location.replace("http://newsii.abudayah.com/photo/31"); } 
    catch(e) { window.location = "http://newsii.abudayah.com/photo/31"; } 
    } 
}); 
}); 
</script> 
+0

Esta es una gran respuesta. El repliegue es realmente útil. – Rivalus

2

tuve un problema con él que no trabaja cuando se recarga misma página en Chrome. Haciendo lo siguiente trabajaron:

window.location.replace("/mypage1.aspx?type=abc"); //redirect to fake page 
    window.location.replace("/mypage.aspx?type=abc"); //redirect to same page 

Es un poco de un truco, pero esto parece ser la única cosa que fuerza una recarga en la misma página en Chrome. IE y FF funcionan sin el redireccionamiento a una página falsa.

+1

IIUC esto se basa en el primer redireccionamiento que no tiene lugar de inmediato por lo que se ejecuta la segunda línea. Pero, en teoría, si la primera ocurre muy rápido, el usuario se atascaría en una URL falsa y vería una página de error. –

4

Estaba teniendo problemas con esto en Chrome. Estaba intentando cargar otra página del mismo dominio, pero estaba usando una URL absoluta (por ejemplo, www.example.com/newurl). Lo cambié a una URL relativa (/newurl) y funciona ahora.

Mi idea es que esta es una función de seguridad para evitar que el usuario sea redirigido a un sitio malicioso a través de algún anuncio de JavaScript.

+0

Gracias! Este fue mi caso! –

Cuestiones relacionadas