Javascript 确定主体';的背景图像(css)已加载
根据某些条件,会加载不同的背景图像:Javascript 确定主体';的背景图像(css)已加载,javascript,jquery,html,css,image,Javascript,Jquery,Html,Css,Image,根据某些条件,会加载不同的背景图像: $('body').css('background','url(image.png)'); 有没有办法确定背景图像是否已加载?加载图像后,我需要执行一个函数。您可以将图像加载到隐藏的标记中,并为标记分配onload处理程序。在onload处理程序中,您可以填充主体的背景图像(由于该图像现在位于浏览器缓存中,因此应该或多或少立即发生),然后运行自定义代码 var img = new Image (); img.onload = function () { $
$('body').css('background','url(image.png)');
有没有办法确定背景图像是否已加载?加载图像后,我需要执行一个函数。您可以将图像加载到隐藏的
标记中,并为标记分配onload
处理程序。在onload处理程序中,您可以填充主体的背景图像(由于该图像现在位于浏览器缓存中,因此应该或多或少立即发生),然后运行自定义代码
var img = new Image ();
img.onload = function () { $('body').css('background','url(image.png)'); };
img.src = src;
您可以将图像加载到隐藏的
标记中,并为标记分配onload
处理程序。在onload处理程序中,您可以填充主体的背景图像(由于该图像现在位于浏览器缓存中,因此应该或多或少立即发生),然后运行自定义代码
您可以使用
src=“Image.png”
添加Image
元素,并附加onLoad
处理程序。浏览器只会加载一次图像,因此如果在设置背景图像
属性之前创建了图像
元素,则应该能够使用onLoad
处理程序。但未经测试:(已发布的答案可能在大多数情况下都能正常工作,但请注意图像的加载事件有一些警告。(当与图像一起使用时,向下滚动到加载事件的警告。)@fabriciomatté警告非常令人不安。但是我使用的是原生onload,即img.onload=function(){}
比jQuery的.load()
安全吗?onload
HTML属性是eval
评估为JS属性,与jQueryload()稍有不同
附加了一个load
事件处理程序。归根结底,两者的作用基本相同,只是jQuery开发人员(大多数情况下)试图解决兼容性问题,而不仅仅是附加一个本机事件处理程序。根据经验,我使用了.load()
处理程序多次处理图像,但没有发现任何问题,只留下该引用,以便在出现问题时了解它。=]
^和在功能上做得几乎相同
,我的意思是在功能上(都在加载
事件中触发)但是很明显,一个元素只能有一个onload
属性/load
属性,而它允许有多个.load()
事件处理程序,但这是一个稍微不同的主题。您可以使用src=“Image.png”添加Image
元素
并附加一个onLoad
处理程序。浏览器将只加载一次图像,因此如果在设置背景图像
属性之前创建了图像
元素,则应能使用onLoad
处理程序。未测试,但:(已经发布的答案可能在大多数情况下都能正常工作,但请注意图像的加载事件有一些警告。(当与图像一起使用时,向下滚动到加载事件的警告)。@Fabriciomatté这些警告非常令人不安。但是我使用的是本机onload,即img.onload=function(){}
这比jQuery的.load()
更安全吗?onload
HTML属性是eval
评估为JS属性,与jQuery.load()
稍有不同,后者附加了一个load
事件处理程序。在一天结束时,这两个属性的作用几乎相同,除了jQuery开发人员(大多数情况下)尝试解决兼容性问题,而不仅仅是附加本机事件处理程序处理程序多次处理图像,但没有发现任何问题,只留下该引用,以便在出现问题时了解它。=]
^和在功能上做得几乎相同
,我的意思是在功能上(都在加载
事件中触发)但是很明显,一个元素只能有一个onload
属性/load
属性,而它允许有多个.load()
事件处理程序,但这是一个稍微不同的主题。
var hiddenImg = new Image();
hiddenImg.onload = function(){
$('body').css('background','url(' + this.src + ')');
your_custom_onload_code();
};
hiddenImg.src = 'image.png';