更改地址栏中的完整 URL,无需重新加载页面

Posted

技术标签:

【中文标题】更改地址栏中的完整 URL,无需重新加载页面【英文标题】:Change complete URL in adress bar, without reloading the page 【发布时间】:2016-06-08 01:24:27 【问题描述】:

我需要一个网页在访问时完全改变用户地址栏。

例如:我访问 www.X.com,但我的地址栏显示 www.Z.com。

我已经查看了 history.pushState / history.replaceState,但使用它们我得到的结果如下:www.X.com/www.Z.com。

有没有办法,最好是使用history.pushState/replaceState,来实现这个效果?

【问题讨论】:

你试过了吗:***.com/questions/10953792/… ***.com/questions/824349/… 我已经尝试过这些,但就像我说的那样,它们附加到地址栏而不是完全替换它。 【参考方案1】:
function changeUrl(page, url) 
    if (typeof (history.pushState) != "undefined") 
        var obj =  Page: page, Url: url ;
        history.pushState(obj, obj.Page, obj.Url);
     else 
        alert("Browser does not support html5.");
    

$(function () 
    $("#button1").click(function () 
        changeUrl('Page1', 'Page1.htm');
    );
    $("#button2").click(function () 
        changeUrl('Page2', 'Page2.htm');
    );
    $("#button3").click(function () 
        changeUrl('Page3', 'Page3.htm');
    );
);

【讨论】:

最好能解释一下代码的作用,而不是仅仅放置一段代码。【参考方案2】:

我通过托管服务提供商解决了这个问题。

【讨论】:

这不是问题的答案。这个问题的实际答案是,出于安全原因,在不重新加载页面的情况下更改浏览器栏中的主机名是不可能的。

以上是关于更改地址栏中的完整 URL,无需重新加载页面的主要内容,如果未能解决你的问题,请参考以下文章

使用 jQuery 更改浏览器地址栏 URL [重复]

PHP将变量附加到地址栏中的url

如何删除 URL 中的参数并将其显示在地址栏中而不会导致 Javascript 中的重定向?

facebook如何重写浏览器地址栏中页面的源URL?

如何在每个页面的地址栏中保持相同的 url?

更改浏览器栏中的网址而不重新加载页面[重复]