如何在不重定向页面的情况下更改URL地址?
例如,当我点击下面的链接时:
<a href="http://mysite.com/projects/article-1" class="get-article">link</a>
Run Code Online (Sandbox Code Playgroud)
我将从链接中获取URL:
var path = object.attr('href');
Run Code Online (Sandbox Code Playgroud)
如果我在下面执行此操作,页面将被重定向:
window.location = path;
Run Code Online (Sandbox Code Playgroud)
我想做这样的网站,当你点击图片时,ajax调用将获取所请求的页面,窗口上的URL地址也将被更改,以便它有一个你点击的路径.
我正在研究一些javascript代码,并使用window.History.pushState加载新HTML页面,而不是使用href标签.我的代码(工作正常)看起来像这样.
window.History.pushState({urlPath:'/page1'},"",'/page1')
Run Code Online (Sandbox Code Playgroud)
奇怪的是,这失败了,即重新加载浏览器
window.History.pushState({urlPath:'/page2.php'},"",'/page2.php')
Run Code Online (Sandbox Code Playgroud)
但是这个工作,内容更新,浏览器没有刷新!(注意URL是绝对的而不是相对的)
window.History.pushState({urlPath:'www.domain.com/page2.php'},"",'www.domain.com/page2.php')
Run Code Online (Sandbox Code Playgroud)
该文档的window.History.pushState说,第三个参数的URL可以是绝对或相对-
URL - 此历史记录条目的URL由此参数指定.请注意,在调用pushState()之后,浏览器不会尝试加载此URL,但稍后可能会尝试加载URL,例如在用户重新启动浏览器之后.新URL不一定是绝对的; 如果是相对的,则相对于当前URL进行解析.新URL必须与当前URL的源相同; 否则,pushState()将抛出异常.此参数是可选的; 如果未指定,则将其设置为文档的当前URL.
绝对URL似乎正在起作用,但相对似乎并非如此.为什么会这样?