我正在使用全屏CSS预加载器,一旦窗口完全加载,应该从网站上完全删除 AND 功能checkRetinaHeader()
已完全执行。该站点在jQuery v3.1.0上运行。
该代码适用于所有主流浏览器,但在IE11上失败,在第一次加载时降低,当网站尚未缓存时(错误:脚本5007:无法获取未定义或空引用的属性'样式')。在这种情况下,.done(function() { ... }
内的代码永远不会执行,CSS预加载器会继续加载。如果您重新加载页面,即该站点在缓存中,它可以工作。
$(window).on('load', function() {
// wait until checkRetinaHeader() has been executed
$.when( checkRetinaHeader() ).done(function() {
var src = $('.header-section').css('background-image');
var url = src.match(/\((.*?)\)/)[1].replace(/('|")/g,'');
var img = new Image();
img.onload = function() {
removePreloader();
};
img.src = url;
// removes function if background image has been completely loaded
if (img.complete) img.onload();
});
});
function checkRetinaHeader() {
// checks window width and pixel density to load appropriate background image
}
function removePreloader() {
// hides fullscreen preloader overlay from document
}
非常感谢您的建议。