这是我的代码:
$("a").on("click", function(event) {
var refrence = $(this).attr("href");
window.history.pushState( {}, "", refrence );
event.preventDefault();
});
现在,如果我第一次单击锚点,那么它的href为:http://example.com/pages/about,
网址正确更改;但是,如果我下次单击该锚点:http://example.com/pages/contact,
浏览器上的URL将变为:http://example.com/pages/pages/contact,
您会看到/ pages目录第一次没有从URL清除。我该如何解决这个问题?
编辑:
<a href="pages/about.html" class="ajax">About</a>
<a href="pages/contact.html" class="ajax">Contact</a>
这是我正在处理的HTML。
// ajax
var $main = $("main");
$(".ajax").on("click", function(event) {
var refrence = $(this).prop("href");
var myAjax = function() {
$main.load(refrence);
};
window.history.pushState(myAjax(), "", refrence);
event.preventDefault();
});
这是我正在使用的JS全功能。
我也在本地主机上工作。
最佳答案
使用诸如/pages/about.html
(带有斜杠)的绝对URL代替诸如pages/about.html
的相对URL,或提供诸如base
的<base href="/">
元素。
否则,一旦导航(通过静态链接或在JS中使用history.pushState()
进行导航),就会基于更新的当前目录(/pages/
+ pages/about.html
= /pages/pages/about.html
等)解析相对链接。
关于javascript - pushState-从href移除父目录?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33089947/