晚上好。
我有一个覆盖站点的加载器,通过 css 转换(不透明度)淡出,当主体类更改为“已加载”时持续 1000 毫秒,然后一旦转换完成,我将其从 DOM 中删除。
我正在使用以下脚本,该脚本在 osx snow leopard/google chrome v28 中的所有内容中都可以正常工作,即使这样也仅适用于少数人-我的设置完全相同,我的客户和我能接触到的几乎所有人测试 - 它工作正常。
但是我有 2 或 3 个错误报告,其中加载程序没有从 DOM 中删除,因此它仍然覆盖其余内容并使其下的元素不可点击。一位用户甚至给我发了一段视频,确认加载器元素仍在 DOM 中。
脚本如下;我想知道我如何删除元素或 setTimeout 函数语法本身是否存在问题。
任何关于为什么这可能会失败的帮助将不胜感激,特别是考虑到我无法复制它!我在脚本中添加了注释来解释我期望它如何工作(以及它在很大程度上是如何工作的)。
var
loaded = false,
_body = document.body,
loader = document.getElementById("loader"),
kill_loader = function() {
if ( loader ) {
loader.parentNode.removeChild(loader);
}
},
cl = function() {
// set loaded to true, add class to body that fades the loader, then remove the loader
loaded = true;
_body.className = _body.className + " loaded";
// the above works as intended
setTimeout(kill_loader,1000);
// this last bit does not seem to work in rare instances as detailed.
// the timeout is so that the loader fully fades before being removed.
};
window.onload = function() {
if ( !loaded ) {
// if loaded variable is false (i.e. cl() has not run), call the function to complete loading
cl();
}
};
setTimeout(function () {
// if page still not loaded after 5 seconds, force the load
if( !loaded ) {
cl();
}
},5000);
预先感谢您提供的任何帮助。