fetch 和 pushState 是否有特定行为?
Is there a particular behavior with fetch and pushState?
我在尝试使用 pushState 获取一些数据时遇到问题。
所以我基本上有4个功能:
- 点击事件侦听器
- 获取link所需
的功能
- 触发动画的函数
- 和获取此 url
的函数
一切正常,直到我尝试在历史记录中推送一个状态。
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
而不是 fetch
从 location.href
.[=24= 获取它]
我在尝试使用 pushState 获取一些数据时遇到问题。
所以我基本上有4个功能:
- 点击事件侦听器
- 获取link所需 的功能
- 触发动画的函数
- 和获取此 url 的函数
一切正常,直到我尝试在历史记录中推送一个状态。
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
而不是 fetch
从 location.href
.[=24= 获取它]