我有以下 javascript,它是在页面空闲时触发和创建的加载程序。它基本上在下一个导航页面加载时显示。该脚本驻留在 (ASP.NET) 母版页和 Ajaxified 用户控件上。
我需要使代码跨浏览器,但不确定违规者是什么。
它只能在 Trident 中正常工作(仅测试 IE9 和 10)——而不是在 Webkit 或 Gecko 中。
我不确定这是否是符号问题,或者 Chrome 和 Safari 的页面生命周期是否从未将自己声明为“!=完成”,因此不会触发条件。
我也更愿意将其保留为纯 JavaScript 解决方案 - 没有 jQuery。
谢谢
loader = 0;
if (window.location.href.indexOf("Login.aspx") < 0) {
setInterval(function () {
if (document.readyState != 'complete') {
document.documentElement.style.overflow = "hidden";
var navLoader = document.createElement("div");
var loaderText = document.createElement("div");
var loaderImg = document.createElement("div");
navLoader.id = "navLoaderDiv";
navLoader.className = "navLoader";
loaderImg.id = "loaderImg";
loaderText.id = "loaderText";
loaderImg.className = "loaderImg";
loaderText.className = "loaderText";
navLoader.appendChild(loaderImg);
navLoader.appendChild(loaderText);
loaderText.innerHTML = "Working on it";
var zedDepth = 99999;
navLoader.style.zIndex = zedDepth;
navLoader.style.background.image = "url(~/Images/loaderHalo2.png) 0 0 / 100% 100% no-repeat";
navLoader.style.position = "absolute";
navLoader.style.right = "0px";
navLoader.style.left = "0px";
navLoader.style.top = "25px";
navLoader.style.bottom = "0px";
if (loader == 0) {
document.documentElement.appendChild(navLoader);
loader = 1;
}
} else if (document.getElementById('navLoaderDiv') != null) {
document.getElementById('navLoaderDiv').style.display = "none";
document.documentElement.style.overflow = "hidden";
}
}, 1000)
}