如何解决谷歌浏览器下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 相关文章推荐
Jsonp 跨域的原理以及Jquery的解决方案
May 18 Javascript
Ext对基本类型的扩展 ext,extjs,format
Dec 25 Javascript
浅谈Javascript面向对象编程
Nov 15 Javascript
自己写了一个展开和收起的多更能型的js效果
Mar 05 Javascript
js获得网页背景色和字体色的方法
Mar 21 Javascript
js获取浏览器基本信息大全
Nov 27 Javascript
JS表格组件神器bootstrap table详解(强化版)
May 26 Javascript
WebPack基础知识详解
Jan 16 Javascript
ionic环境配置及问题详解
Jun 27 Javascript
Angular实现搜索框及价格上下限功能
Jan 19 Javascript
javascript中contains是否包含功能实现代码(扩展字符、数组、dom)
Apr 07 Javascript
从零开始在vue-cli4配置自适应vw布局的实现
Jun 08 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解答方法
2012/02/04 PHP
PHP实现简单实用的验证码类
2015/07/29 PHP
PHP迭代器接口Iterator用法分析
2017/12/28 PHP
定义select的边框颜色
2008/04/28 Javascript
asp.net下使用jquery 的ajax+WebService+json 实现无刷新取后台值的实现代码
2010/09/19 Javascript
Js实现滚动变色的文字效果
2014/06/16 Javascript
超炫的jquery仿flash导航栏特效
2014/11/11 Javascript
jQuery点击按钮弹出遮罩层且内容居中特效
2015/12/14 Javascript
深入浅析jQuery对象$.html
2016/08/22 Javascript
bootstrap响应式表格实例详解
2017/05/15 Javascript
angularJs的ng-class切换class
2017/06/23 Javascript
Angular中自定义Debounce Click指令防止重复点击
2017/07/26 Javascript
一个简易时钟效果js实现代码
2020/03/25 Javascript
Vue.js 2.0和Cordova开发webApp环境搭建方法
2018/02/26 Javascript
详解webpack4升级指南以及从webpack3.x迁移
2018/06/12 Javascript
让axios发送表单请求形式的键值对post数据的实例
2018/08/11 Javascript
微信小程序之滑动页面隐藏和显示组件功能的实现代码
2020/06/19 Javascript
谈一谈vue请求数据放在created好还是mounted里好
2020/07/27 Javascript
[03:44]2014DOTA2国际邀请赛 71专访:DK战队赛前讨论视频遭泄露
2014/07/13 DOTA
Python切片用法实例教程
2014/09/08 Python
Windows和Linux下使用Python访问SqlServer的方法介绍
2015/03/10 Python
Python numpy 常用函数总结
2017/12/07 Python
python实现简易云音乐播放器
2018/01/04 Python
Python系统监控模块psutil功能与经典用法分析
2018/05/24 Python
Python使用Pandas读写Excel实例解析
2019/11/19 Python
python实现简单的购物程序代码实例
2020/03/03 Python
django 读取图片到页面实例
2020/03/27 Python
css3中检验表单的required,focus,valid和invalid样式
2014/02/21 HTML / CSS
英国婴儿和儿童服装网站:Vertbaudet
2018/04/02 全球购物
美国家庭鞋店:Shoe Sensation
2019/09/27 全球购物
洗发露广告词
2014/03/14 职场文书
蓝颜请假条
2014/04/11 职场文书
《大作家的小老师》教学反思
2014/04/16 职场文书
硕士论文致谢范文
2015/05/14 职场文书
小学庆六一主持词
2015/06/30 职场文书
(开源)微信小程序+mqtt,esp8266温湿度读取
2021/04/02 Javascript