如何完全更改url而无需将页面重新加载到新的url?

时间:2018-08-31 16:39:12

标签: javascript php html5 url address-bar

我在这里询问了许多有关不重新加载而更改url的问题。虽然我尝试了几乎所有方法,但无法完全更改页面的url(包括域名部分)而不重新加载新页面。我该怎么办?

2 个答案:

答案 0 :(得分:3)

这不可能,有充分的理由。您可以在此处获取有关此信息的更多信息:Same-origin policy

答案 1 :(得分:0)

您可以使用pushState进行描述。例如(从此处引出:https://www.aspsnippets.com/Articles/Change-URL-in-Browser-Address-Bar-without-reloading-using-JavaScript-and-jQuery.aspx

<script type="text/javascript">
function ChangeUrl(title, url) {
    if (typeof (history.pushState) != "undefined") {
        var obj = { Title: title, Url: url };
        history.pushState(obj, obj.Title, obj.Url);
    } else {
        alert("Browser does not support HTML5.");
    }
}
</script>
<input type="button" value="Page1" onclick="ChangeUrl('Page1', 'Page1.htm');" />
<input type="button" value="Page2" onclick="ChangeUrl('Page2', 'Page2.htm');" />
<input type="button" value="Page3" onclick="ChangeUrl('Page3', 'Page3.htm');" />

请注意,如果您尝试直接在浏览器中打开测试文件(即,URL为file:// whatever),这将 无效。浏览器的行为有所不同。您将需要通过某些http服务器提供该服务。

修改 这不能回答OP提出的特定问题。它将更改路径,但是您不能通过pushState更改URL的主机名部分。正如其他人已经回答的那样,由于同源策略,无法在不重新加载页面的情况下进行更改。如果其他人只需要更改URL的路径部分,我就把它留在这里。