如何解决谷歌浏览器下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 相关文章推荐
实现web打印的各种方法介绍及实现代码
Jan 09 Javascript
js如何判断用户是在PC端和还是移动端访问
Apr 24 Javascript
jQuery select表单提交省市区城市三级联动核心代码
Jun 09 Javascript
实现js保留小数点后N位的代码
Nov 13 Javascript
跟我学习javascript的Date对象
Nov 19 Javascript
jQuery实现无限往下滚动效果代码
Apr 16 Javascript
Node.js中Bootstrap-table的两种分页的实现方法
Sep 18 Javascript
vue-cli与webpack处理静态资源的方法及webpack打包的坑
May 15 Javascript
基于Koa2写个脚手架模拟接口服务的方法
Nov 27 Javascript
layui--select使用以及下拉框实现键盘选择的例子
Sep 24 Javascript
vue.js+element 默认提示中英文操作
Nov 11 Javascript
JavaScript选择器函数querySelector和querySelectorAll
Nov 27 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
PHP6 先修班 JSON实例代码
2008/08/23 PHP
PHP setTime 设置当前时间的代码
2012/08/27 PHP
PHP中功能强大却很少使用的函数实例小结
2016/11/10 PHP
yii2中LinkPager增加总页数和总记录数的实例
2017/08/28 PHP
Laravel如何实现自动加载类
2019/10/14 PHP
jquery下json数组的操作实现代码
2010/08/09 Javascript
ajax的hide隐藏问题解决方法
2012/12/11 Javascript
JavaScript实现简单的时钟实例代码
2013/11/23 Javascript
在javascript中如何得到中英文混合字符串的长度
2014/01/17 Javascript
javascript获取网页宽高方法汇总
2015/07/19 Javascript
Javascript 创建类并动态添加属性及方法的简单实现
2016/10/20 Javascript
AngularJS自定义插件实现网站用户引导功能示例
2016/11/07 Javascript
VueJs单页应用实现微信网页授权及微信分享功能示例
2017/07/26 Javascript
微信小程序实现图片放大预览功能
2020/10/22 Javascript
JavaScript重复元素处理方法分析【统计个数、计算、去重复等】
2017/12/14 Javascript
Vue 打包体积优化方案小结
2020/05/20 Javascript
小程序自定义圆形进度条
2020/11/17 Javascript
[46:02]DOTA2上海特级锦标赛D组资格赛#2 Liquid VS VP第二局
2016/02/28 DOTA
解决Python下imread,imwrite不支持中文的问题
2018/12/05 Python
Python装饰器用法实例分析
2019/01/14 Python
Python的高阶函数用法实例分析
2019/04/11 Python
Python3.5内置模块之random模块用法实例分析
2019/04/26 Python
pandas DataFrame 行列索引及值的获取的方法
2019/07/02 Python
python3 assert 断言的使用详解 (区别于python2)
2019/11/27 Python
用python求一重积分和二重积分的例子
2019/12/06 Python
Python GUI编程学习笔记之tkinter事件绑定操作详解
2020/03/30 Python
css3 仿写阿里云水纹效果的示例代码
2018/02/10 HTML / CSS
End Clothing美国站:英国男士潮牌商城
2018/04/20 全球购物
ProForm英国站点:健身房和健身器材网上商店
2019/06/05 全球购物
英国顶级足球鞋的领先零售商:Lovell Soccer
2019/08/27 全球购物
Java基础面试题
2012/11/02 面试题
市场安全管理制度
2014/01/26 职场文书
cf收人广告词
2014/03/14 职场文书
2015年妇产科工作总结
2015/05/18 职场文书
2019年大学生学年自我鉴定!
2019/03/25 职场文书
Python必备技巧之函数的使用详解
2022/04/04 Python