0

我有以下 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)
}

4

0 回答 0