window.location.href不适用于Chrome

时间:2013-08-09 01:16:18

标签: jquery google-chrome window.location

此代码适用于Firefox但不适用于Chrome。我相信它是window.location.href,但我能做些什么来为chrome工作呢。基本上这会切换页面。

<!DOCTYPE html>
<html>
 <head>
    <script src="http://code.jquery.com/jquery-1.6.4.js"></script>
<script>
$(document).keydown(function(e){    
    if (e.keyCode == 37) {  // left
       window.location.href = $('#prev').attr('href');   
       return false;
    } else if (e.keyCode == 39) {  // right
       window.location.href =  $('#next').attr('href');  
       return false;
    }
});


</script>


   </head>
 <body>


  <div style="display:hidden;">
    <a id="next" href=<?php echo "readerapp.php?mode=$mode&pagenumber=$next";?>></a>
    <a id="prev" href=<?php echo "readerapp.php?mode=$mode&pagenumber=$last";?>></a>
</div>
   </body>
</html>

6 个答案:

答案 0 :(得分:2)

您发送到浏览器的路径是相对的。您需要为JS提供完整的URL。试试这个:

window.location.href = 'http://'+ window.location.host + $('#next').attr('href');

作为一个简单的例子:

在此页面上,以chrome( Shift + CTRL + j )打开控制台并输入:

window.location.href = 'http://' + window.location.host + $('.bottom-notice a:last').attr('href');

它会将您重定向到https://stackoverflow.com/questions/ask

答案 1 :(得分:2)

我遇到了同样的问题,我找到了两个解决方法。第一种方法是设置超时帧,因此代码如下:

setTimeout(function () { document.location.href = "nextpage.html" }, 1000);

第二个解决方案是将下一页分配给window.location,它将如下所示:

window.location.assign("nextpage.html");

希望它有所帮助。

答案 2 :(得分:1)

使用window.location

进行尝试
$(document).keydown(function(e){
    if (e.keyCode == 37) {  // left
        window.location = $('#prev').attr('href');   
        return false;
    } else if (e.keyCode == 39) {  // right
        window.location =  $('#next').attr('href');  
        return false;
    }
});

答案 3 :(得分:0)

点击input type="submit"不允许脚本设置location.href

input type="button"工作正常。

答案 4 :(得分:0)

所以我知道这有点旧了,但是由于它是Google搜索时排名第一的结果,所以我想在这里加两分钱。

对我来说,问题最终是我在fancyBox中执行此操作,然后调用“ parent.jQuery.fancybox.getInstance()。close();”)之后。在IE中,此方法工作正常,但我猜在Chrome中,通过调用.close()阻止了重定向工作。

解决方案是仅删除该行。由于重定向了主窗口,所以window.location.href仍然强制将其关闭。

答案 5 :(得分:-3)

重新启动Chrome后,问题就消失了。