这是我的代码:

$("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/

10-13 04:16