我有一个覆盖网站的加载程序,通过css转换(不透明度)淡出,当body类更改为“loaded”时持续1000ms,然后一旦转换完成,我将其从DOM中删除
我正在使用以下脚本,它可以很好地适用于所有条形码osx snow leopard / google chrome v28,甚至只适用于几个人 - 我有完全相同的设置,我的客户端和几乎所有人我可以测试 - 它工作正常。
但我有2或3个错误报告,其中加载器未从DOM中删除,因此它仍覆盖其余内容并使其下的元素无法点击。一个用户甚至给我发了一个视频,确认了loader元素仍然在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);
提前感谢大家提供的任何帮助。
答案 0 :(得分:0)
好的解决方案与我的脚本本身无关,但是由于安装了一个Chrome插件(measureIt.js)而导致我的脚本被删除。辉煌。
我已经设法在安装插件的情况下复制问题(不仅限于OSX或chrome版本),并添加了一个简单的try catch
语句来删除加载程序。
感谢Crazy Train帮助我整理语法 - 它使问题更容易隔离。