fetch 和 pushState 是否有特定行为?

Is there a particular behavior with fetch and pushState?

我在尝试使用 pushState 获取一些数据时遇到问题。

所以我基本上有4个功能:

一切正常,直到我尝试在历史记录中推送一个状态。

history.pushState 在我的获取请求之前或之后,像这样中断请求:controller/controller/about。php 出于某种原因。

我尝试了 console.log(url);在所有 4 个函数上,结果是相同的(一个很好的 url 来获取:例如 controller/about.php)

我在我的获取请求中尝试了 history.pushState 并且它工作正常(例如加载 controller/about.php)但我需要使用 popstate 事件并调用相同的获取再次发挥作用。

我的总结代码:

const loadNewContent = async url => {
    const response = await fetch(url, { headers: headers });
    // Tried adding pushState inside fetch request
    // window.history.pushState(url, `${url}`, url);
};

// function that fires animations then load the last function
const changePage = url => {
    loadNewContent(url).catch(error => console.error(error));;
};

const ajax = e => {
    // Tried adding pushState before fetch fires
    // window.history.pushState(newPage, ``, newPage);
    changePage(newPage);
    // Tried adding pushState after fetch fires
    // window.history.pushState(newPage, ``, newPage);
};

// Click event fires ajax function
ajax(e);

这就是相对路径的工作原理。最后一个 / 之后的所有内容都将被丢弃,并附加相对的 URL。

http://localhost/imparfait + controller/about.php 变为 http://localhost/controller/about.php

http://localhost/imparfait/controller/article.php + controller/about.php 变为 http://localhost/controller/controller/about.php

使用绝对路径(以/开头),相对方案URL(以//localhost开头),绝对路径URL(以http://),或者使用 the URL object 构造一个 URL,这样您就可以指定 base 而不是 fetchlocation.href.[=24= 获取它]