加载图像后触发 javascript 的最快方法
Fastest way to fire javascript after an image has been loaded?
我有一部分代码取决于知道页面上图像的宽度。
如果我立即触发它(在$(function(){
顶部),它有时不起作用,因为图像尚未加载。
如果我使用 jquery(我已经在页面上的其他内容)在 load() 上触发,它永远不会触发。 大概是因为图像在JS执行之前就已经加载了,或者因为它被缓存了。
$('#photo').load(function(){
alert('loaded');
});
//doesn't fire
如果我执行以下操作,它确实有效,但在第二次获取图像时出现明显的延迟:
$('#photo').load(function(){
alert('loaded');
});
$('#photo').attr('src',$('#photo').attr('src')+'?'+new Date().getTime());
//fires, but is slow
在2016年,一定有一个好方法可以做到这一点吗? 无论是在jquery还是vanilla JS。
为什么不简单地使用图像的onload函数:
<img src="/path/to/image.jpg" onload="doStuff(this);" />
一旦图像加载,它将触发..
您可以在加载图像后使用 Unveil 插件触发回调。作为奖励,您还将获得延迟加载!
$("img").unveil(200, function() {
$(this).load(function() {
// where you do your things... this = the image object
});
});
我正在使用以下内容:
$('<img />').one('load', function() {
// do stuff
}).attr('src', $('#photo').src);
创建一个标签,将一次性加载处理程序附加到它,然后才告诉它 src url 是什么。
另一种方法是:
$('#photo').on("load",function(){
// do stuff
}).each(function(){
if(this.complete) {
$(this).trigger('load');
}
});
这里的想法是,链接确保如果照片在缓存中并且加载处理程序附加得太晚而无法捕获它,则 each(this.complete) 部分将节省一天并触发加载。
这些符合您对快速的定义吗?
相关文章:
- object.仅冻结对象方法.JavaScript
- 快速方法 Javascript/Jquery/etc 检索表单中包含的所有 aspnet:textbox (input)
- 查看整个画布是否被涂成一种颜色的方法.Javascript + processing.js
- 从方法 JavaScript 访问对象变量
- pop()方法javascript没有给出完整的输出
- 如何格式化setInterval方法JavaScript的运行时间
- 正则表达式/替换方法Javascript
- 将vars传递给其他方法javascript
- 寻找一种简化if/else语句的方法.javascript
- focus()或select()方法javascript,在Chrome中性能缓慢
- 未捕获的类型错误:对象没有方法..Javascript
- 对象方法javascript中的方法/函数
- 构造函数中的私有方法(Javascript,坏主意?)
- 查看数组是否有数组的最简单方法?Javascript
- 扁平化数组元素(不是整个数组)的有效方法JavaScript
- 最常用的生成PDF报告的方法(JavaScript,node.js)
- 创建多维数组与地图方法:javascript
- 对象方法Javascript HTML DOM中的多个事件监听器
- 卡住了.adddeventlistener不能在属性内处理我的方法.Javascript
- 任何获取文档选择的x、y、w、h的方法(JavaScript)