1

我有简单的脚本来检查图像,但它在我的 ios 5.1 的 ipad 上无法正常工作。在图像中,我收到 jpg 的流,因此负载必须在每一帧上工作(如在大型 safari 中),但在 ipad 中它只触发一次。可能是一些建议?

$('#image').load(function(){
    console.log(new Date().getTime(););
});
4

2 回答 2

3

jQuery官网上有提到:

与图像一起使用时加载事件的注意事项

开发人员尝试使用.load()快捷方式解决的一个常见挑战是在图像(或图像集合)完全加载时执行功能。应该注意几个已知的警告。这些是:

  • 它不能始终如一地工作,也不能可靠地跨浏览器
  • 如果图像 src 设置为与以前相同的 src,它不会在 WebKit 中正确触发
  • 它没有正确地冒泡 DOM 树
  • 可以停止对已经存在于浏览器缓存中的图像进行触发
于 2012-09-07T12:26:16.783 回答
0

正如@Parv-sharma 所说, .load 不可靠。在这里也有同样的经历。

如果这是关于响应式图像调整(只是猜测)之类的东西,那么恕我直言,这是您解决问题的最佳机会:

  1. 当然有一个中央 resizeScript() 。确保你抓住了 img.height() === 0 的情况,在这种情况下,坚持你的优雅降级,也就是默认,也就是非 js 缩放。(阅读:暂时什么都不做)

  2. 最多触发你的 resizeScript() 三次

    在 image.load() 上,在 jQuery.ready() 上,最后是延迟的,几毫秒后。

    setTimeout( App.adjustFullsize ,300);
    

    这要么没有害处(如果之前的调用之一已经完成了这项工作,或者如果事情一直失败),但有一个很好的变化,即图像现在也“正式”加载了......

(哦,第四次,您可能还想注册到 resize()(即设备转动)事件......)

于 2014-12-15T16:51:42.173 回答