window.location.replace()无法重定向浏览器

时间:2012-01-17 17:27:49

标签: javascript jquery redirect replace location

我使用网页进行导航,但这段代码不起作用,有什么问题?

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

6 个答案:

答案 0 :(得分:29)

请勿使用.replace(),只需直接指定值即可。

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

});

答案 1 :(得分:19)

您的代码有语法错误。你的最后一个括号是在引号内,而不是在...之外......

尝试:

<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。始终支持分配位置值。但是,使用替换而不是分配位置值的原因是您不希望当前URL显示在历史记录中,或者在使用后退按钮时显示。由于这并非总是可行,您只需要尽可能满足:

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

答案 2 :(得分:4)

我在Chrome中遇到此问题。我试图从同一个域加载另一个页面,但使用的是绝对URL(例如www.example.com/newurl)。我将其更改为相对网址(/newurl),现在可以使用了。

我的想法是,这是一项安全功能,可防止用户通过某些javascript广告重定向到恶意网站。

答案 3 :(得分:2)

Chrome 中重新加载相同页面时,我遇到了问题。做了以下工作:

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

这有点像黑客攻击,但这似乎是强制在Chrome中同一页面重新加载的唯一因素。 IE和FF可以在没有重定向到虚假页面的情况下工作。

答案 4 :(得分:1)

我用过这个,这是工作

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

});

答案 5 :(得分:0)

使用这种方式:

window.history.pushState("", "", "new url");
window.location.reload();