Javascript 如何在不将页面重新加载到新url的情况下完全更改url?

Javascript 如何在不将页面重新加载到新url的情况下完全更改url?,javascript,php,html,url,address-bar,Javascript,Php,Html,Url,Address Bar,我已经经历了很多关于在不重新加载的情况下更改url的问题。虽然我尝试了几乎所有的方法,但在不重新加载新页面的情况下,我未能完全更改页面的url,包括其域名部分。我该怎么做呢?您可以使用pushState来执行您描述的操作。例如(从这里引出:) 函数ChangeUrl(标题、url){ if(typeof(history.pushState)!=“未定义”){ var obj={Title:Title,Url:Url}; pushState(obj,obj.Title,obj.Url); }否则

我已经经历了很多关于在不重新加载的情况下更改url的问题。虽然我尝试了几乎所有的方法,但在不重新加载新页面的情况下,我未能完全更改页面的url,包括其域名部分。我该怎么做呢?

您可以使用pushState来执行您描述的操作。例如(从这里引出:)


函数ChangeUrl(标题、url){
if(typeof(history.pushState)!=“未定义”){
var obj={Title:Title,Url:Url};
pushState(obj,obj.Title,obj.Url);
}否则{
警报(“浏览器不支持HTML5”);
}
}
请注意,如果您试图直接在浏览器中打开测试文件(即,如果URL为file://whatever). 浏览器的行为不同。您需要通过一些http服务器为其提供服务

编辑
这并没有回答OP提出的特定问题。它将更改路径,但不能通过pushState更改URL的主机名部分。正如其他人已经回答的那样,由于同源策略的原因,如果不重新加载页面,就不可能改变这一点。我把这个放在这里,以防其他人只需要更改URL的路径部分。

这是不可能的,原因很好。你可以在这里获得更多信息:

这是完全不可能的。幸运的是,这是不可能的。ooppss。这个世界上没有什么能做到这一点?如果我们将浏览器重定向到新的url,但一旦它开始加载页面内容并更改了地址栏,我们就会停止它,保存其地址栏状态并执行新的iframe或代码,该怎么办?@Roy:了解同源策略。如果这是可能的话,它将是完美的网络钓鱼工具。人们想要这样做的两个主要原因是恶意的(网络钓鱼)和认为他们可以通过隐藏地址使他们的网站更安全。这是行不通的,因为浏览器中的F12开发者工具可以向人们显示真实的页面地址。但是你不能按照OP的要求去做…不经允许就改变域redirected@rfestag我已经试过了,这段代码并没有改变url的域名,只是改变了url的结尾部分。如前所述,我错过了您问题中有关主机名更改的部分。我编辑了我的答案以反映这一点。正如@marcogmonteiro所述,由于相同的原产地政策,您想要做的是不可能的。
<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');" />