Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript window.location.replace()无法重定向浏览器_Javascript_Jquery_Redirect_Replace_Location - Fatal编程技术网

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

Javascript window.location.replace()无法重定向浏览器,javascript,jquery,redirect,replace,location,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) { //

我使用页面进行导航,但此代码不起作用,有什么问题吗

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

$(文档).ready(函数(){
$(“body”).keydown(函数(事件){
如果(event.keyCode==37){//left
window.location.replace(“http://newsii.abudayah.com/photo/2)";  }
如果(event.keyCode==39){//right
window.location.replace(“http://newsii.abudayah.com/photo/31)";  }
});
});
不要使用
.replace()
为此,直接赋值即可


我用了这个,它的工作

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

});

您的代码有语法错误。结束括号在引号内,而不是在引号外

尝试:


$(文档).ready(函数(){
$(“body”).keydown(函数(事件){
如果(event.keyCode==37){//left
window.location.replace(“http://newsii.abudayah.com/photo/2");  }  
如果(event.keyCode==39){//right
window.location.replace(“http://newsii.abudayah.com/photo/31");  }
});
});
并非所有浏览器都支持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>

$(文档).ready(函数(){
$(“body”).keydown(函数(事件){
如果(event.keyCode==37){//left
请尝试{window.location.replace(“http://newsii.abudayah.com/photo/2"); } 
catch(e){window.location=”http://newsii.abudayah.com/photo/2"; }
}
如果(event.keyCode==39){//right
请尝试{window.location.replace(“http://newsii.abudayah.com/photo/31"); } 
catch(e){window.location=”http://newsii.abudayah.com/photo/31"; }
}
});
});

Chrome中重新加载同一页面时,我发现它无法工作。执行以下操作有效:

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

这是一个有点黑客,但这似乎是唯一的事情,迫使重新加载在同一页上的铬。IE和FF在没有重定向到假页面的情况下工作。

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

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

使用以下方式:

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

我必须说,一个有JSFIDLE的答案必须是没有JSFIDLE的答案的10倍。同意。。。只要我感觉不到讽刺,有机会知道原因吗?
replace()
assign()
有什么不好?@green-
location.assign()
实际上与设置
location.href
(与直接设置
location
相同)。每一项都会向浏览器历史记录中添加一个新条目(后退按钮等)
location.replace()
有一个非常有效且不同的用例,它会更改页面url,但不会向浏览器历史记录中添加条目。请参阅。您无法直接访问
窗口。位置
,因为它是只读属性。其中一个答案似乎注意到,每个URL中的括号都在引号内,而它需要在引号外。否则,replace方法的使用在语法上是正确的。IIUC这依赖于第一个重定向没有立即发生,所以第二行开始运行。但从理论上讲,如果第一个发生得很快,用户就会被假url卡住,并看到错误页面。这是一个很好的答案。这个后备方案真的很有用。
   window.location.replace("/mypage1.aspx?type=abc"); //redirect to fake page
   window.location.replace("/mypage.aspx?type=abc");  //redirect to same page
window.history.pushState("", "", "new url");
window.location.reload();