在IOS应用中内嵌H5页面中,image的onload事件失效

花末 2017-09-27 05:38:59
我需要把一段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中生效?
...全文
2218 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
花末 2017-09-28
  • 打赏
  • 举报
回复
引用 1 楼 jslang 的回复:
这样试试

      var img = new Image();
      img.onload = function(){
        var w = this.width,
        h = this.height;
        alert("图片尺寸:"+w+"*"+h)
      };
      img.src = base64_img;
      if (img.complete)
      	img.onload();
刚才回复img.complete结果是false的记错了。返回是true,但是 img.onload();是个错误的方法。我用
花末 2017-09-28
  • 打赏
  • 举报
回复
引用 1 楼 jslang 的回复:
这样试试

      var img = new Image();
      img.onload = function(){
        var w = this.width,
        h = this.height;
        alert("图片尺寸:"+w+"*"+h)
      };
      img.src = base64_img;
      if (img.complete)
      	img.onload();
img.complete 的结果是false
天际的海浪 2017-09-28
  • 打赏
  • 举报
回复
img.complete返回true 就可以直接取img.width和img.height了啊。 不行的话可能是那个base64数据有问题,换个base64图片数据试下
天际的海浪 2017-09-27
  • 打赏
  • 举报
回复
这样试试

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

87,989

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧