Necesito saber a ciencia cierta en un momento dado si una imagen de background en CSS se ha cargado entera.
He probado a hacer la clásica función con callback que carga una imagen en JavaScript y cuando está cargada, cambiar el fondo, pero no se puede pasar un objeto Image como parámetro, por lo que tengo que hacer:
elemento.style.backgroundImage = "url('fondo.png' ) ";
Al hacer esto, da igual si la imagen ya estaba cargada en caché, vuelve a pedírsela al servidor. La carga es mucho más rápida porque cuando recibe la respuesta del servidor, utiliza la imagen en caché, pero durante el tiempo que pasa, unos 400ms, el fondo no se cambia.
He pensado que sería mejor cargar los fondos como distintas clases, y cuando estén cargados cambiar la clase del elemento. Pero no encuentro ninguna manera de detectar cuándo un background CSS ha terminado de cargarse.
No es necesario que sea un evento, podría detectarlo mediante polling si fuera necesario, ya que es para un juego y el bucle se ejecuta constantemente.