如何解决谷歌浏览器下jquery无法获取图片的尺寸


Posted in Javascript onSeptember 10, 2015

代码如下:

$(document).ready(function(){ 
 var img_h=$img.height();  
 var img_w=$img.width();  
})

以上代码在IE和火狐中没有问题,但是在谷歌中可能会出现问题,之所以没货的尺寸就是因为图片没有加载完成。

修改方法如下:

$(document).ready(function(){ 
 $img.load(function(){  
  var img_h=$img.height();  
  var img_w=$img.width();  
 }) 
})

还有点时间,接下来在给大家分享jQuery动态改变图片显示大小的方法,具体内容如下。

当我们要显示后台传过来若干个尺寸不一的图片时,为了保证图片大小的一致性及比例的协调,需要动态改变图片显示尺寸。通过搜索,我们可以从网上找到实现此功能的jQuery代码如下。这段代码可以使图片的大小保持在一定范围内,如果图片的原始尺寸都大于max*值,则显示出来的图片宽度都相等。

原始代码:

$(document).ready(function() {
   $('.post img').each(function() {
   var maxWidth = 100; // 图片最大宽度
   var maxHeight = 100;  // 图片最大高度
   var ratio = 0; // 缩放比例
   var width = $(this).width();  // 图片实际宽度
   var height = $(this).height(); // 图片实际高度
   // 检查图片是否超宽
   if(width > maxWidth){
     ratio = maxWidth / width;  // 计算缩放比例
     $(this).css("width", maxWidth); // 设定实际显示宽度
     height = height * ratio;  // 计算等比例缩放后的高度 
     $(this).css("height", height); // 设定等比例缩放后的高度
   }
   // 检查图片是否超高
   if(height > maxHeight){
     ratio = maxHeight / height; // 计算缩放比例
     $(this).css("height", maxHeight);  // 设定实际显示高度
     width = width * ratio;  // 计算等比例缩放后的高度
     $(this).css("width", width * ratio);  // 设定等比例缩放后的高度
   }
 });
 });

在我的js代码中,也采取了这种写法。然而在不同的浏览器测试效果时,发现此种写法不能适应chrome浏览器(chrome版本号为10.0.648.204),会产生图片以原有尺寸显示出来的bug。后来把$('.post img').each()的代码用$(window).load()方法包装起来,就解决了chrome浏览器显示不正确的问题。那么在chrome浏览器中为什么会产生bug,并且$(document).ready和$(window).load有什么区别呢?

原来document ready事件是在HTML文档载入即DOM准备好就开始执行了,即使图片资源还没有加载进来。而window load事件执行的稍晚一些,它是在整个页面包括frames, objects和images都加载完成后才开始执行的。从这种区别可以分析出chrome浏览器在对于图片不采用$(window).load()方法处理时,图片载入与动态改变图片的js代码执行顺序不确定。

----------------------------------------------------

上面是文章的全部类容,关于上面的代码,放到我的页面中时获取图片高度时会报错,提示没有提供width方法

var width = $(this).width();  // 图片实际宽度
var height = $(this).height(); // 图片实际高度

故修改代码如下:

jQuery(window).load(function () {
      jQuery("div.product_info img").each(function () {
        DrawImage(this, 680, 1000);
      });
    });
    function DrawImage(ImgD, FitWidth, FitHeight) {
      var image = new Image();
      image.src = ImgD.src;
      if (image.width > 0 && image.height > 0) {
        if (image.width / image.height >= FitWidth / FitHeight) {
          if (image.width > FitWidth) {
            ImgD.width = FitWidth;
            ImgD.height = (image.height * FitWidth) / image.width;
          } else {
            ImgD.width = image.width;
            ImgD.height = image.height;
          }
        } else {
          if (image.height > FitHeight) {
            ImgD.height = FitHeight;
            ImgD.width = (image.width * FitHeight) / image.height;
          } else {
            ImgD.width = image.width;
            ImgD.height = image.height;
          }
        }
      }
    }

以上内容是本人给大家分享的如何解决谷歌浏览器下jquery无法获取图片的尺寸以及jQuery动态改变图片显示大小的方法,希望大家喜欢,更希望朋友请持续关注本站,谢谢。

Javascript 相关文章推荐
javascript event 事件解析
Jan 31 Javascript
a标签的href和onclick 的事件的区别介绍
Jul 26 Javascript
使用时间戳解决ie缓存的问题
Aug 20 Javascript
node.js中的url.parse方法使用说明
Dec 10 Javascript
js enter键激发事件实例代码
Aug 17 Javascript
ionic隐藏tabs的方法
Aug 29 Javascript
巧用Vue.js+Vuex制作专门收藏微信公众号的app
Nov 03 Javascript
微信小程序 网络API Websocket详解
Nov 09 Javascript
JS实现HTML标签转义及反转义
Apr 14 Javascript
基于 Vue 的树形选择组件的示例代码
Aug 18 Javascript
JavaScript门面模式详解
Oct 19 Javascript
javascript实现用户必须勾选协议实例讲解
Mar 24 Javascript
js实现的动画导航菜单效果代码
Sep 10 #Javascript
js实现3D图片逐张轮播幻灯片特效代码分享
Sep 09 #Javascript
简单实现兼容各大浏览器的js复制内容到剪切板
Sep 09 #Javascript
jQuery实现MSN中文网滑动Tab菜单效果代码
Sep 09 #Javascript
js基于面向对象实现网页TAB选项卡菜单效果代码
Sep 09 #Javascript
JS实现自动变换的菜单效果代码
Sep 09 #Javascript
jQuery实现点击小图片淡入淡出显示大图片特效
Sep 09 #Javascript
You might like
深入PHP数据缓存的使用说明
2013/05/10 PHP
使用图灵api创建微信聊天机器人
2015/07/23 PHP
php 截取中英文混合字符串的方法
2018/05/31 PHP
php微信公众号开发之答题连闯三关
2018/10/20 PHP
PHP7数组的底层实现示例
2019/08/25 PHP
javascript实现的鼠标链接提示效果生成器代码
2007/06/28 Javascript
通过javascript把图片转化为字符画
2013/10/24 Javascript
js获取客户端外网ip的简单实例
2013/11/21 Javascript
js中array的sort()方法使用介绍
2014/02/20 Javascript
基于javascript实现tab选项卡切换特效调试笔记
2016/03/30 Javascript
jQuery获取复选框被选中数量及判断选择值的方法详解
2016/05/25 Javascript
AngularJS入门教程之路由机制ngRoute实例分析
2016/12/13 Javascript
使用JavaScript触发过渡效果的方法
2017/01/19 Javascript
vue小白入门教程
2018/04/02 Javascript
泛谈JS逻辑判断选择器 || &&
2019/05/24 Javascript
微信小程序实现分享商品海报功能
2019/09/30 Javascript
微信小程序 scroll-view 水平滚动实现过程解析
2019/10/12 Javascript
[54:05]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第一场 1月9日
2021/03/11 DOTA
python 测试实现方法
2008/12/24 Python
解决pandas.DataFrame.fillna 填充Nan失败的问题
2018/11/06 Python
Django如何自定义model创建数据库索引的顺序
2019/06/20 Python
浅析数据存储的三种方式 cookie sessionstorage localstorage 的异同
2020/06/04 HTML / CSS
会计毕业生求职简历的自我评价
2013/10/20 职场文书
影视制作岗位职责
2013/12/04 职场文书
上班迟到检讨书
2014/01/10 职场文书
环保倡议书格式范文
2014/05/14 职场文书
中国梦演讲稿5分钟
2014/08/19 职场文书
离职证明范本(5篇)
2014/09/19 职场文书
关于成绩下滑的自我检讨书
2014/09/20 职场文书
党的群众路线教育实践活动心得体会(企业)
2014/11/03 职场文书
2014年学生会个人工作总结
2014/11/07 职场文书
企业转让协议书(范文2篇)
2019/08/15 职场文书
SQLServer2019 数据库环境搭建与使用的实现
2021/04/08 SQL Server
javascript代码简写的几种常用方式汇总
2021/08/23 Javascript
InterProcessMutex实现zookeeper分布式锁原理
2022/03/21 Java/Android
springboot入门 之profile设置方式
2022/04/04 Java/Android