Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.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
Javascript 确定主体';的背景图像(css)已加载_Javascript_Jquery_Html_Css_Image - Fatal编程技术网

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属性,与jQuery
load()稍有不同
附加了一个
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';