我可以用途:
window.addEventListner();
在某种程度上我所有的图片都有一个display = 'none'。一旦图像加载完毕,我想设置display = 'inline'这样我就可以规范化什么是显示,而图像正在下载。在这种情况下,我无法预加载我的图像。
display = 'none'
display = 'inline'
ef1yzkbh1#
在某些父DOM元素上使用capturing事件侦听器,如**document、document.body或其他需要观察的图像 Package 器。您可以在element的addEventListener方法的第三个参数**中执行此操作:
document
document.body
addEventListener
document.body.addEventListener( 'load', function(event){ var tgt = event.target; if( tgt.tagName == 'IMG'){ tgt.style.display = 'inline'; } }, true // <-- useCapture (or options object) );
第三个参数可以是boolean(true),也可以是新添加的具有capture boolean属性({ capture: true })的“options”对象。使用这种方法,在遍历document.images live HTMLCollection或某些(重新)查询的静态NodeList时,不必(重新)附加事件处理程序。这通常被称为“事件委托模式”。它也适用于动态插入的图像。这也适用于image's error loading events.addEventListener at MDN
true
capture
{ capture: true }
document.images
error
iqxoj9l92#
load/onload事件不会冒泡(reference,参考),因此您所要求的是不可能的。您必须将事件处理程序附加到每个映像节点,或者在捕获阶段拦截事件,如其他答案中所建议的那样。
load
onload
oewdyzsn3#
Array.prototype.forEach.call(document.querySelectorAll('img'), function (elem) { elem.addEventListener('load', function () { this.style.display = 'inline'; }); if (elem.complete) { elem.style.display = 'inline'; } });
如果图像已经被偶然加载,则“加载”事件将不会触发;因此,我们检查complete是否已经被设置。
complete
ccrfmcuu4#
您可以使用Image.onload事件处理程序,但不涉及冒泡。
Image.onload
var i = new Image; i.onload = function() { this.style.display = 'block'; }
oyjwcjzk5#
由于load事件不会冒泡,因此您可以启动自己的冒泡事件。jQuery的一个例子:
<img src="dog.jpg" onload="$(this).trigger('image-loaded')" />
3duebb1j6#
$('img').on('load', function() { $(this).show() })
没有图书馆:
window.onload = function() { var imgs = document.querySelectorAll('img') imgs.onload = function() { this.style.display = 'inline'; } }
6条答案
按热度按时间ef1yzkbh1#
在某些父DOM元素上使用capturing事件侦听器,如**
document
、document.body
或其他需要观察的图像 Package 器。您可以在element的addEventListener
方法的第三个参数**中执行此操作:第三个参数可以是boolean(
true
),也可以是新添加的具有capture
boolean属性({ capture: true }
)的“options”对象。使用这种方法,在遍历
document.images
live HTMLCollection或某些(重新)查询的静态NodeList时,不必(重新)附加事件处理程序。这通常被称为“事件委托模式”。
它也适用于动态插入的图像。
这也适用于image's
error
loading events.addEventListener
at MDNiqxoj9l92#
load
/onload
事件不会冒泡(reference,参考),因此您所要求的是不可能的。您必须将事件处理程序附加到每个映像节点,或者在捕获阶段拦截事件,如其他答案中所建议的那样。oewdyzsn3#
如果图像已经被偶然加载,则“加载”事件将不会触发;因此,我们检查
complete
是否已经被设置。ccrfmcuu4#
您可以使用
Image.onload
事件处理程序,但不涉及冒泡。oyjwcjzk5#
由于load事件不会冒泡,因此您可以启动自己的冒泡事件。jQuery的一个例子:
3duebb1j6#
没有图书馆: