如何解决谷歌浏览器下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 相关文章推荐
XENON基于JSON变种
Jul 27 Javascript
JavaScript与Image加载事件(onload)、加载状态(complete)
Feb 14 Javascript
jquery中加载图片自适应大小主要实现代码
Aug 23 Javascript
禁止IE用右键的JS代码
Dec 30 Javascript
JavaScript中的null和undefined区别介绍
Jan 01 Javascript
JS+CSS实现模仿浏览器网页字符查找功能的方法
Feb 26 Javascript
jQuery获取访问者IP地址的方法(基于新浪API与QQ查询接口)
May 25 Javascript
jquery中封装函数传递当前元素的方法示例
May 05 jQuery
jQuery内容过滤选择器与子元素过滤选择器用法实例分析
Feb 20 jQuery
Vue封装Axios请求和拦截器的步骤
Sep 16 Javascript
如何用JavaScipt测网速
May 09 Javascript
Vue3.0 手写放大镜效果
Jul 25 Vue.js
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编程中的__clone()方法使用详解
2015/11/27 PHP
php无限级分类实现方法分析
2016/10/19 PHP
thinkPHP5.0框架环境变量配置方法
2017/03/17 PHP
php利用云片网实现短信验证码功能的示例代码
2017/11/18 PHP
解决php写入数据库乱码的问题
2019/09/17 PHP
Javascript结合css实现网页换肤功能
2009/11/02 Javascript
基于jquery的15款幻灯片插件
2011/04/10 Javascript
js时间日期和毫秒的相互转换
2013/02/22 Javascript
关于Javascript作用域链的八点总结
2013/12/06 Javascript
jquery表单验证插件(jquery.validate.js)的3种使用方式
2015/03/28 Javascript
JQuery 两种方法解决刚创建的元素遍历不到的问题
2016/04/13 Javascript
Jquery插件仿百度搜索关键字自动匹配功能
2016/05/11 Javascript
jQuery简单实现列表隐藏和显示效果示例
2016/09/12 Javascript
AngularJS实现Input格式化的方法
2016/11/07 Javascript
axios发送post请求,提交图片类型表单数据方法
2018/03/16 Javascript
js 对象使用的小技巧实例分析
2019/11/08 Javascript
vue实现评价星星功能
2020/06/30 Javascript
详解基于element的区间选择组件校验(交易金额)
2021/01/07 Javascript
[15:56]Heroes18_暗影萨满(完美)
2014/10/31 DOTA
Python数据类型详解(二)列表
2016/05/08 Python
Python使用Scrapy保存控制台信息到文本解析
2017/12/27 Python
Python异常对代码运行性能的影响实例解析
2018/02/08 Python
Python lambda函数基本用法实例分析
2018/03/16 Python
搞定这套Python爬虫面试题(面试会so easy)
2019/04/03 Python
在自动化中用python实现键盘操作的方法详解
2019/07/19 Python
如何通过python实现人脸识别验证
2020/01/17 Python
基于django和dropzone.js实现上传文件
2020/11/24 Python
python和opencv构建运动检测器的实现
2021/03/03 Python
波兰购物网站:MALL.PL
2019/05/01 全球购物
电大自我鉴定范文
2013/10/01 职场文书
社会实践自我鉴定
2013/11/07 职场文书
质量保证书
2015/01/17 职场文书
冰雪公主观后感
2015/06/16 职场文书
大卫科波菲尔读书笔记
2015/06/30 职场文书
计算机实训心得体会
2016/01/14 职场文书
MySQL Server 层四个日志
2022/03/31 MySQL