web-dev-qa-db-fra.com

window.location.replace () ne fonctionne pas pour rediriger le navigateur

Je fais de la navigation avec des pages mais ce code ne fonctionne pas, quel est le problème?

<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>
13
Abudayah

N'utilisez pas .replace() pour cela, attribuez simplement la valeur directement.

Exemple

$("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"; 
    }

});
30
jondavidjohn

Votre code contient une erreur de syntaxe. Votre parenthèse finale est à l'intérieur de la citation et non à l'extérieur ...

Essayer:

<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 n'est pas pris en charge dans tous les navigateurs. L'attribution de la valeur d'emplacement est toujours prise en charge. Cependant, la raison d'utiliser remplacer plutôt que d'attribuer la valeur d'emplacement est que vous ne voulez pas que l'URL actuelle apparaisse dans l'historique ou qu'elle s'affiche lorsque vous utilisez le bouton de retour. Comme ce n'est pas toujours possible, il suffit de se contenter de ce qui est possible:

<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>
21
Bill

J'avais des problèmes avec cela dans Chrome. J'essayais de charger une autre page du même domaine, mais j'utilisais une URL absolue (par exemple .www.example.com/newurl). Je l'ai changé en une URL relative (/newurl) et ça marche maintenant.

Je pense que c'est une fonction de sécurité pour empêcher l'utilisateur d'être redirigé vers un site malveillant via une annonce javascript.

4
user3413723

J'ai eu un problème avec le fait qu'il ne fonctionnait pas lors du rechargement de la même page dans Chrome. Faire ce qui suit a fonctionné:

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

C'est un peu un hack, mais cela semble être la seule chose qui force un rechargement sur la même page dans Chrome. IE et FF fonctionnent sans la redirection vers une fausse page.

3
Ewald Stieger

J'ai utilisé ça et ça marche

$(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;
        }
    });

});
1
Abudayah