setTimeout(function () {
document.querySelector('.load-box').style.display = 'none'
}, 4500);
var _LoadingHtml = '页面加载中,请等待...';
function completeLoading() {
if (document.readyState == "complete") {
var loadingMask = document.getElementById('loadingDiv');
loadingMask.parentNode.removeChild(loadingMask);
}
}
-->
.load-box {
background: rgba(0,0,0,.6) url(https://iphoneswallpapers.com/wp-content/uploads/2021/04/Loading-Feelings-iPhone-Wallpaper.jpg) center repeat;
width: 100%;
height: 100%;
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 99999999999;
}
<div class="load-box"></div>
加一个全局变量loaded给默认值是false,在代码中判定如果loaded===false,那么就进行调用,调用完成后将loaded=ture。
哈喽,不是很理解你加个循环的意思,可以详细说说嘛
var loading = false;
setTimeout(function(){
document.querySelector('.load-box').style.display = 'none'
}, 4500);
var _LoadingHtml = '页面加载中,请等待...';
function completeLoading(){
if(!loading){
document.getElementById('loadingDiv').remove();
loading = true;
}
}
没看懂题意,什么叫加个循环只执行一次
你是想在网站页面加载之前先显示loading,页面加载完之后隐藏loading吗?
这个加载应该理解为HTML加载完毕,否则你显示loading的时候需要操作页码元素,页面元素都还没有加载完,根本操作不了。
HTML的加载顺序是自上而下,逢山开路遇水搭桥,你可以深入了解一下HTML加载顺序的相关知识,主要是HTML、CSS、JS的执行顺序。
你要想在合适的时机调用你的loading加载,还需要了解一下HTML的生命周期。
你代码里面的if (document.readyState == "complete") ,就是判定加载状态的,complete表示文档和所有子资源已完成加载,表示 load 事件即将被触发。
HTML页面的生命周期有以下三个重要事件:
DOMContentLoaded — 浏览器已经完全加载了HTML,DOM树已经构建完毕,但是像是 和样式表等外部资源可能并没有下载完毕。
load — 浏览器已经加载了所有的资源(图像,样式表等)。
beforeunload/unload – 当用户离开页面的时候触发。
每个事件都有特定的用途
DOMContentLoaded – DOM加载完毕,js可以访问所有DOM节点,初始化界面。
load – 附加资源已经加载完毕,可以在此事件触发时获得图像的大小
beforeunload/unload – 用户正在离开页面:可以询问用户是否保存了更改以及是否确定要离开页面。
你可以在DOMContentLoaded里面调用你的loading,如果你用到了DOM元素。
function showLoading() {
//显示你的loading
}
if (document.readyState == 'loading') {
document.addEventListener('DOMContentLoaded', showLoading);
} else {
showLoading();
}
window.onload = () => loadingMask.parentNode.removeChild(document.getElementById('loadingDiv'));
把这个事件写在onhashchange事件上就可以了,当地址发生变化调用
你的想法就是跳转网页的时候加一个正在加载的画面是吗
你说的是同一个模板里的,只不过打开不同内容是吧,如果是这样的话,你只能是使用cookie记录是否加载,参考以下代码:
window.onload=function(){
if(!getCookie('loading1')){
document.querySelector('.load-box').style.display = 'block'
setCookie('loading1',1)
}
}
//JS操作cookies方法!
//写cookies
function setCookie(name,value)
{
var Days = 1;//保存一天
var exp = new Date();
exp.setTime(exp.getTime() + Days*24*60*60*1000);
document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
}
//读取cookies
function getCookie(name)
{
var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
if(arr=document.cookie.match(reg))
return true;
else
return false;
}
记得吧css
.load-box {
background: rgba(0,0,0,.6) url(https://iphoneswallpapers.com/wp-content/uploads/2021/04/Loading-Feelings-iPhone-Wallpaper.jpg) center repeat;
width: 100%;
height: 100%;
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 99999999999;
display: none;//默认是这个
}