Javascript window.location.href - 刷新页面而不是重定向

3

我使用window.location.href重定向我的浏览器,但我不确定为什么其中一个起作用而另一个不起作用。当我使用相对链接时,它会刷新当前页面。当我使用完整的URL时,它会重定向。我所在的页面和Process.aspx页面在同一目录级别上。因此,我应该只需要有一个相对链接?但是,当我这样做时,它只会重新加载我当前所在的页面。我对window.location.href的基本概念理解不足吗?

    $(document).ready(function() {

    $( "button" )
        .button();
    $("#cancel")
        .click(function( event ) {
            alert("click");

            //Below Line Doesn't work
            window.location.href = "/Process.aspx";

            //Below Line Does work
            window.location.href = "http://localhost:65215/Process.aspx";
    });
});

3
“doesn't work”是什么意思?会发生什么事情? - SLaks
2
更倾向于解释预期输出与实际输出的差异,而不是简单地说“不起作用”。 - Wesley Murch
1
没有办法进行测试,你要怎么删除“/”呢? - Stefan Surkamp
抱歉,我会编辑并澄清。 @Stefan,斜杠不会改变它。 - gbam
1
这可能会有所帮助:https://dev59.com/_3RB5IYBdhLWcg3wz6Wd#506004 或者 https://dev59.com/r3I-5IYBdhLWcg3w0cKG - Zim84
显示剩余3条评论
5个回答

6

替换操作会模拟重定向,但我不想模拟重定向。我只想使用相对路径。那么我的唯一选择是解析当前位置字符串吗? - gbam
我认为在你的情况下解析当前位置字符串将是最佳选项。 - rink.attendant.6

2

这是一个相对较少见的情况,但如果您给包含锚标签的容器div添加事件监听器,并希望使每个容器div而不仅仅是锚标签可点击并重定向到锚标签的href属性中包含的链接,则可能会出现此问题。在这种情况下,您需要包括event.preventDefault()以防止这种行为发生。

纯JS

document.getElementById("myAnchorDiv").addEventListener("click", function(event){
   event.preventDefault();

    //get url 
    URL = ...

   //Below Line should now work
   window.location.href = URL;
});

jQuery

$("#myAnchorDiv").on("click", function( event ) {
    event.preventDefault();

    //get url 
    URL = ...

    //Below Line should now work
    window.location.href = URL;

 });

如果你愿意,当然可以将最后两行代码合并成一行代码,例如 window.location.href = [你的URL];


1
尝试使用以下代码: location.href = location.origin + "/Process.aspx";

0

试试这个:

window.location = window.location.protocol + 
                  '//' +
                  window.location.hostname +
                  window.location.pathname;

0

你可以尝试一个只刷新页面的技巧,你可以实现 onclick="location.href='wherever'" 和第二个 href="/Process.aspx"。当点击时,onclick 会先触发,然后 href 会带你回去。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接