Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 不使用img元素的css背景图像回调_Html_Css_Callback_Background Image - Fatal编程技术网

Html 不使用img元素的css背景图像回调

Html 不使用img元素的css背景图像回调,html,css,callback,background-image,Html,Css,Callback,Background Image,我正在研究各种低功耗设备,出于各种原因,我想切换到背景图像,而不是使用实际的img标签。有一个问题似乎阻止我这样做,那就是没有与后台图像加载相关联的回调,这一点很关键(因为这些设备上发生了故障) 我看到很多建议使用图像标记的回调来检查资源,然后删除资源,但对我来说可能不够健壮。例如,如果平台不支持缓存,则可能会为同一映像创建两个网络请求/下载。此外,对于图像,总是有可能成功加载图像,但是对于背景图像,加载失败 我是否可以使用addEventListener将一个单独的回调附加到div之类的东西上

我正在研究各种低功耗设备,出于各种原因,我想切换到背景图像,而不是使用实际的img标签。有一个问题似乎阻止我这样做,那就是没有与后台图像加载相关联的回调,这一点很关键(因为这些设备上发生了故障)

我看到很多建议使用图像标记的回调来检查资源,然后删除资源,但对我来说可能不够健壮。例如,如果平台不支持缓存,则可能会为同一映像创建两个网络请求/下载。此外,对于图像,总是有可能成功加载图像,但是对于背景图像,加载失败

我是否可以使用addEventListener将一个单独的回调附加到div之类的东西上,以监视its基于网络的CSS请求?或者,如果不是回调,至少验证背景图像是否已实际加载

<style>
.class {
  background-image: url('./static/example.jpg');
}
</style>
<div class="foo"></div>

function onSuccess() { // this called if ./static/example.jpg loaded
}

function onFailure() { // this called if ./static/example.jpg failed to load
}

.类{
背景图像:url('./static/example.jpg');
}
函数onSuccess(){//如果加载了./static/example.jpg,则调用此函数
}
函数onFailure(){//在加载./static/example.jpg失败时调用此函数
}

是否可以使用JS加载图像,如果加载了,则将类应用于元素

大概是这样的:

var img = new Image();
img.onload = function() {
    // add class
}
img.src = '/images/myImage.jpg';

这样做的想法是让JS调用图像,然后一旦浏览器将其放入缓存中,就应用类并加载它

你试过什么了吗?你能给我们看一下你的代码吗?看这个:@CodeToad,这行不通。该代码所做的是收集具有基于图像的CSS属性的所有元素,并生成一个相应的img标记供其侦听(正如其他人所建议的)。这假设完美的缓存(可能不可用),并可能发出另一个网络请求。如果图像回调成功,但实际CSS对象的网络请求失败怎么办?反之亦然。如果情况更糟,您只需添加一个带有
显示:none
标记,然后使用
imageLoaded
()。然而,这只是一个解决办法。@tyteen4a03是的,我已经尝试过了,虽然有时可以这样做,但我不能保证每次在缓存较差或没有缓存的平台上都可以这样做。如果我做了标记,加载了图像,设置了背景url,但没有加载该url,该怎么办?从编程角度看,一切都很好,只是背景图像从未加载。