我通过 jQuery 进行了一系列 AJAX 调用。当执行 ajax 调用时,没有视觉指示。通常,如果您单击链接或进行其他非 ajax 加载,浏览器会在选项卡中显示一个小加载图标。
有什么方法可以告诉浏览器在选项卡中显示这个小图标吗? (这些调用大约有 30 个,所以我希望避免修改每个调用)。
没有。
但是你可以修改光标的css。
body {
cursor:wait;
}
在进入任何代码或任何内容之前,我只想说这是一个丑陋的解决方案,但它确实对我有用。
我所做的就是在网站上放置一个 iframe。然后我在 css 中使用 display: none 隐藏它。
然后,在每次 ajax 调用时,我都会使用新页面重新加载 iframe。这会导致浏览器在标签栏中显示正在加载。
我确实知道这不是一个完美的解决方案,并且存在一些缺陷。就像如果 iframe 的加载速度比 ajax 快的话,您无法控制加载的持续时间。但我只是把它扔在那里。也许其他人可以在这个概念的基础上进行构建。
这是一个替代方案。
在进行调用之前,您可以显示图像,然后在函数中(而不是在调用之后)再次隐藏它。
这实际上可以通过 Navigation API 使用本机功能(目前仅适用于 Chrome、Edge 和 Opera):
function showLoading(promise) {
navigation.addEventListener('navigate', evt => {
evt.intercept({
scroll: 'manual',
handler => promise,
});
}, { once: true });
return navigation.navigate(location.href).finished;
}
// show browser loading UI for 1.5s
showLoading(new Promise(r => setTimeout(r, 1500)));
灵感来自@jason-miller:https://mastodon.online/@[电子邮件受保护]/109865246685541843