我为我正在开发的移动网站编写了一个图片库jQuery插件。对于画廊中的每张图片,我都有低分辨率和高分辨率。Image onload event not firing on Windows Phone 8
该图库全屏显示,每个图像最初都以低分辨率图像填充。当用户向左/向右滑动给定图像时,我想要开始安静地加载高分辨率图像,并在完成时用低分辨率图像替换它。
此时此操作适用于iOS和Android,但在Windows Phone 8上,高分辨率图像的onload事件似乎不会触发,因此交换不会发生。
代码:
var image = images[images_i];
if (image.$el && image.full && image.$el.attr('src') != image.full) {
var fullImage = new Image();
fullImage.onload = function() {
image.$el.attr('src', image.full);
};
fullImage.src = image.full;
}
(库生成“图片”散列包含每个图像的URL,jQuery对象,元数据等)
我还最初试图实际插入一个新的隐藏图像进DOM,并使用jQuery绑定到加载事件。但是,我发现如果图像已经被缓存了,这并不会一直触发,所以我必须为$ image.prop('complete')添加另一个检查。这在WP8上产生了相同的结果。
我知道IE有一个问题,如果图像缓存的onload事件不会触发。绕过它的方法是检查是否有高度,如果有,图像被加载并且可以调用onload方法。 – epascarello 2013-02-20 17:02:43