【问题标题】:Javascript window.location.href - Refreshes page instead of redirectingJavascript window.location.href - 刷新页面而不是重定向
【发布时间】:2023-03-11 18:03:01
【问题描述】:

我正在使用 window.location.href 重定向我的浏览器,但我不确定为什么一个有效而一个无效。当我使用相对链接时,它会刷新当前页面。当我使用完整的网址时,它会重定向。我所在的页面和 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";
    });
});

【问题讨论】:

标签: javascript redirect browser


【解决方案1】:

有点边缘情况,但是如果您将事件侦听器添加到其中带有锚标记的容器 div,并且您希望使每个容器 div(而不仅仅是锚标记)可点击,然后重定向到锚标记的href attribute 中包含的链接。在这种情况下,您需要包含 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 = [your URL];

【讨论】:

    【解决方案2】:

    试试这个:

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

    【讨论】:

      【解决方案3】:

      您可以尝试仅刷新页面的 hack,您可以实现 onclick="location.href='wherever'",然后第二个 href="/Process.aspx" onclick 将首先被触发,href 将带您返回。

      【讨论】:

        【解决方案4】:

        试试:location.href = location.origin + "/Process.aspx";

        【讨论】:

          【解决方案5】:

          Mozilla Developer Network documentation 开始,href 是页面的整个 URL。该列表中唯一的相对属性是 path,它与页面的主机或域相关。

          您可能还想看看使用reloadreplace 方法。见How to redirect to another webpage in JavaScript/jQuery?

          【讨论】:

          • Replace 会模拟重定向,但我不想模拟重定向?我只想有一个相对路径?那么我唯一的选择是解析当前的位置字符串吗?
          • 我认为解析当前位置字符串将是您的最佳选择。
          猜你喜欢
          • 2012-07-07
          • 2015-03-11
          • 2022-01-14
          • 1970-01-01
          • 1970-01-01
          • 2012-03-06
          • 2020-12-08
          • 2019-03-10
          相关资源
          最近更新 更多