在IOS应用中内嵌H5页面中,new Image()的onload事件失效怎么办?

我需要把一段base64的图片地址生成一张图片然后用canvas画出来。但是转图片的这步卡住了,在安卓或者网页浏览器中没有问题,但在IOS中失效。我试过由js直接new Image()创建:

      var img = new Image();
      img.onload = function(){
        var w = this.width,
        h = this.height;
        alert("图片尺寸:"+w+"*"+h)
      };
      img.src = base64_img;

或者先在页面上定义一个<img>标签,然后赋值:

    <img id="test" style="display:none;" src="">

      var img = $("#test")[0];
      img.onload = function(){
        var w = this.width,
        h = this.height;
        alert("图片尺寸:"+w+"*"+h)
      };
      img.src = base64_img;

但是都不能生效,在ios中onload事件根本不会触发,就算直接用$(img).trigger('load');或者$(window).trigger('load');触发也无法获取图片的尺寸,也无法直接用drawImage(image, x, y)画在画布中。请问该怎么解决呢?怎么让image的onload在ios中生效?

阅读 10.8k
3 个回答

我也遇到这样的情况了,因为onload失效所以我使用了setTimeout延迟了1000ms来做的

经过多次测试,就算是原有页面的一个img,使用$("#test").attr('src', base64_img) 或者 img = base64_img 都不能改变src ,找不到解决办法~

新手上路,请多包涵
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏