加载事件<img/> 涉及哪个阶段
to what stage <img/> load event is regarding?
$(".img").on("load",function () {...} );
在以下情况下load
是否提出:
- img 已完全下载到计算机?
或
- IMG 完全由浏览器渲染?
从规范:
load:当 DOM 实现完成加载文档中的所有内容、框架集中的所有帧、 或 OBJECT 元素。
从HTML5规范中更具体:
当用户代理要更新
img
的图像数据时 元素,它必须运行以下步骤:
- 将
img
元素返回到不可用状态。- 如果获取算法的实例仍在为此元素运行,则中止该算法,丢弃任何挂起的内容 该算法生成的任务。
- 忘记
img
元素的当前图像数据(如果有(。- 如果用户代理不支持图像,或者已禁用其对图像的支持,则中止这些步骤。
- 如果元素的
src
属性的值为空字符串,则将元素设置为中断状态,将任务排队到 在img
元素上触发一个名为error
的简单事件, 并中止这些步骤。- 否则,解析元素的
src
属性相对于元素的值,如果成功, 获取该资源。 在此获得的资源 [SIC] 时尚是img
元素的图像数据。 获取图像 必须延迟元素文档的加载事件,直到 资源后由网络任务源排队的任务 已获取(定义如下(已运行。 ... 任务 在资源出现后由网络任务源排队 在给定以下替代方法的情况下,提取必须适当地运行:↪ 如果下载成功
将
img
元素设置为完全可用状态,更新图像的表示形式 适当地将任务排队以触发简单事件 在img
元素处命名为load
。↪ 否则
将
img
元素设置为中断状态,并将任务排队以在img
元素上触发名为error
的简单事件。
基于此,具体如下:
- 将
img
元素设置为完全可用状态 - 适当地更新图像的呈现方式,以及
- 将任务排队以在
img
元素上触发名为load
的简单事件
。只有在浏览器完全呈现图像后,才会触发 Load 事件。
读完这些行:
加载图像后,将调用处理程序。
可以停止为浏览器缓存中已存在的图像触发
我理解答案"img 已完全下载到计算机">
源
你问:"荷载事件是关于什么阶段的?
然后发布了一个不完整的jQuery片段:
$(".img").on("load",function () {...} );
IMG 元素的 onload
事件处理程序(其代码由浏览器本身处理(与 jQuery 的 on
实例方法不同。所以不清楚你想知道什么。
正如你的问题、随后的回答和源代码本身(请阅读下文(所证明的那样,jQuery 继续作为如何不设计 API 的示例——并且在他们被告知它出了什么问题近 7 年后。
那么它有什么问题呢?简而言之,jQuery方法是用松散的通用契约设计的。他们期望任何内容(字符串、主机对象等(,类型检查,然后根据可选参数(有时甚至是可选的中间参数(以不同的行为重载方法,并使用广泛的条件逻辑来处理所有情况。on
方法用内部标志one
(if (one === 1)
- 如果它是 2 怎么办?
jQuery.fn.extend({
on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
var origFn, type;
// Types can be a map of types/handlers
if ( typeof types === "object" ) {
// ( types-Object, selector, data )
if ( typeof selector !== "string" ) { // && selector != null
// ( types-Object, data )
data = data || selector;
selector = undefined;
}
for ( type in types ) {
this.on( type, selector, data, types[ type ], one );
}
return this;
}
if ( data == null && fn == null ) {
// ( types, fn )
fn = selector;
data = selector = undefined;
} else if ( fn == null ) {
if ( typeof selector === "string" ) {
// ( types, selector, fn )
fn = data;
data = undefined;
} else {
// ( types, data, fn )
fn = data;
data = selector;
selector = undefined;
}
}
if ( fn === false ) {
fn = returnFalse;
} else if ( !fn ) {
return this;
}
if ( one === 1 ) {
origFn = fn;
fn = function( event ) {
// Can use an empty set, since event contains the info
jQuery().off( event );
return origFn.apply( this, arguments );
};
// Use same guid so caller can remove using origFn
fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
}
return this.each( function() {
jQuery.event.add( this, types, fn, data, selector );
});
},
one: function( types, selector, data, fn ) {
return this.on( types, selector, data, fn, 1 );
}
相关文章:
- 手柄'img'单击事件并插入'alt'使用jQuery将属性转换为文本框
- 在谷歌地图 API 中,不会为 img 元素触发 Onclick 事件
- JavaScript on Click 事件在 img 标签上无法正常工作
- onClick 事件 onJavaScript img 标记不起作用
- 从 img 标记中删除点击事件
- JQM:如何从 img 精灵中捕获每个按钮(区域)中的点击事件
- 如何在TR的最后一个TD中添加事件或将ID属性添加到IMG标签
- 如何绑定 img 的加载事件
- 如果 Div 放置在 img 标记的顶部,则不会在 Div 上触发鼠标关闭事件 - 问题仅在 IE 中
- 使用 jquery 仅为 标记中的 img 设置 onfocus 事件
- 使标记成为事件的目标,而不是img
- 如何在React.js组件中处理img onChange事件
- 图像滚动<img>并且<a>事件
- 在Opera's用户js中,当页面完成加载并下载了所有资源(如img,script,css等)时,使用什么事件名
- 如何用react响应img load事件
- 不能在Javascript中设置新的IMG事件属性
- 对img load事件执行html注释
- 如何处理onLoad事件在img标签和其他
- & # 39;负载# 39;事件在img 302重定向中被调用?如何测试这个
- 为什么onerror事件不工作的img标签,当jquery放在页脚