javascript - 图像加载事件未在 iPhone (IOS) 上触发

标签 javascript ios iphone image onload-event

我有一个非常简单的代码片段,用于在图像加载到新图像对象上后设置元素的背景图像。

var img = new Image();
var myelement = document.getElementById('myelement_id');
img.addEventListener('load', function(){
  myelement.setAttribute('style', 'background-image: url(/public/images/myimage.jpg)');
});
img.src = '/public/images/myelement.jpg';

这个问题已经被问过几次,但答案并不令人满意。

这不是图像的大小。无论图像的大小或格式如何,都不会触发加载事件。

错误事件也不会被触发。有人建议在 IOS 上触发错误事件而不是加载事件。

这不是浏览器。这是IOS。该行为在 IOS 上的 Safari 或 Chrome 上是相同的。

它不能通过 BrowserStack 观察到。图片在 BrowserStack 上加载正常,但物理设备无法触发加载事件。

我会先分配函数,然后设置 src 来触发加载事件。

最佳答案

这似乎对我有用。但我不确定将添加事件监听器更改为 .load 事件是否有所不同。

function imgLoad(_imgDOM, _imgID){
  _imgDOM.setAttribute('style', 'background-image: url(/public/images/load/' + _imgID + '.jpg)');
}

var imgLoadArray = document.querySelectorAll('.img__load');

for (var i = 0; i < imgLoadArray.length; i++) {
  var imgDOM = imgLoadArray[i];
  var imgID = imgDOM.getAttribute('id');
  var img = new Image();
  img.onload = imgLoad(imgDOM, imgID);
  img.src = '/public/images/load/' + imgID + '.jpg';
}

关于javascript - 图像加载事件未在 iPhone (IOS) 上触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41938934/

相关文章:

ios - 益智游戏中的某些 UIImageViews 不会移动到新的 CGPoint 中心

iphone - 如何重置核心数据中的主键计数/最大值?

ios - setObject :forKey: and setValue:forKey: in NSMutableDictionary? 有什么区别

javascript - jQuery .when() .then() promise 不遵守 for 循环

javascript - javascript 正则表达式不匹配少于 3 个字符的问题

ios - ViewController 中的 SQLite 错误 14

iphone - google::dense_hash_map 与 std::tr1::unordered_map 相比?

javascript - .checked 和 .disable 在 javascript 中不能一起工作

javascript - 客户门户中自定义对象的表单验证

ios - 为什么 UIImageView 在其内容模式为 .scaleAspectFill 时在纵向图片中超出其限制?