Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在不离开页面的情况下更改浏览器中的URL?_Javascript_Jquery_Ajax_Html - Fatal编程技术网

Javascript 如何在不离开页面的情况下更改浏览器中的URL?

Javascript 如何在不离开页面的情况下更改浏览器中的URL?,javascript,jquery,ajax,html,Javascript,Jquery,Ajax,Html,目前我正在编写一个复杂的AJAX应用程序,整个站点都有干净的URL。目前PHP为每个页面创建了基本布局,但是我不想在用户单击链接时离开每个页面,我也不想在URL中有散列,因为它不适合站点的其余部分。我知道这个问题以前在网站上出现过,这似乎是很常见的问题,但我想知道是否有一种简洁的HTML5方式可以改变地址栏中的URL,即使它在技术上保持在同一页面上。你可以使用历史记录。pushState,但只能在支持它的浏览器中。只需在浏览器JavaScript控制台中尝试以下代码即可 history.push

目前我正在编写一个复杂的AJAX应用程序,整个站点都有干净的URL。目前PHP为每个页面创建了基本布局,但是我不想在用户单击链接时离开每个页面,我也不想在URL中有散列,因为它不适合站点的其余部分。我知道这个问题以前在网站上出现过,这似乎是很常见的问题,但我想知道是否有一种简洁的HTML5方式可以改变地址栏中的URL,即使它在技术上保持在同一页面上。

你可以使用
历史记录。pushState
,但只能在支持它的浏览器中。只需在浏览器JavaScript控制台中尝试以下代码即可

history.pushState({},"URL Rewrite Example","https://stackoverflow.com/example")
更多关于这方面的信息,请访问


类似的问题

正如其他人所说,HTML5的history.pushstate是一条路要走。尝试在github上浏览回购协议,以查看它的运行()

麻烦是IE唯一支持历史的版本。pushstate是IE10,有点糟糕

很多网站都使用hashbang!URL,如Twitter(例如)。hashbang是搜索引擎同意的一种URL模式,因此他们仍然可以搜索和索引一个Ajax功能强大的网站(更多信息,请参见此处),这样您就可以走这条路了


唯一的另一种方法是对支持history.pushstate的浏览器使用history.pushstate,对不支持history.pushstate的浏览器使用全页刷新。

请确保遵循以下步骤,否则您将面临安全错误:操作不安全。我的意思是,如果您的域是,您只允许将history.pushState用于
http://example.com/Someotherpage
,您不允许改为使用以防止网络钓鱼。若并没有这样的限制,每个人都可以创建一个类似于google.com的假页面,加载后,他可以创建URL来查看!如果你在2015年后碰巧找到了这个答案,请注意谷歌#!爬网规范已被弃用: