如何解决谷歌浏览器下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 相关文章推荐
JS之Date对象和获取系统当前时间详解
Jan 13 Javascript
让JavaScript和其它资源并发下载的方法
Oct 16 Javascript
浅谈Javascript如何实现匀速运动
Dec 19 Javascript
jQuery+slidereveal实现的面板滑动侧边展出效果
Mar 14 Javascript
JavaScript与ActionScript3两者的同性与差异性
Sep 22 Javascript
JavaScript实现短暂提示框功能
Apr 04 Javascript
Bootstrap Table中的多选框删除功能
Jul 15 Javascript
jQuery实现图片简单轮播功能示例
Aug 13 jQuery
VUE写一个简单的表格实例
Aug 06 Javascript
js获取浏览器地址(获取第1个斜杠后的内容)
Sep 03 Javascript
Vue通过getAction的finally来最大程度避免影响主数据呈现问题
Apr 24 Javascript
nestjs返回给前端数据格式的封装实现
Feb 22 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
linux环境apache多端口配置虚拟主机的方法深入介绍
2013/06/09 PHP
php检测useragent版本示例
2014/03/24 PHP
Smarty最简单实现列表奇偶变色的方法
2015/07/01 PHP
学习PHP Cookie处理函数
2016/08/09 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
2017/11/10 PHP
jquery select 设置默认选中的示例代码
2014/02/07 Javascript
jQuery遍历之next()、nextAll()方法使用实例
2014/11/08 Javascript
HTML5+jQuery实现搜索智能匹配功能
2017/03/24 jQuery
mui上拉加载更多下拉刷新数据的封装过程
2017/11/03 Javascript
jquery实现侧边栏左右伸缩效果的示例
2017/12/19 jQuery
vue实现弹框遮罩点击其他区域弹框关闭及v-if与v-show的区别介绍
2018/09/29 Javascript
vue中的ref和$refs的使用
2018/11/22 Javascript
Vue路由模块化配置的完整步骤
2019/08/14 Javascript
js实现无限瀑布流实例方法
2019/09/16 Javascript
vue3 源码解读之 time slicing的使用方法
2019/10/31 Javascript
jsonp格式前端发送和后台接受写法的代码详解
2019/11/07 Javascript
vue 获取到数据但却渲染不到页面上的解决方法
2020/11/19 Vue.js
详解Python中的各种函数的使用
2015/05/24 Python
python列出目录下指定文件与子目录的方法
2015/07/03 Python
Python查找文件中包含中文的行方法
2018/12/19 Python
Python功能点实现:函数级/代码块级计时器
2019/01/02 Python
Python替换月份为英文缩写的实现方法
2019/07/15 Python
Python从文件中读取指定的行以及在文件指定位置写入
2019/09/06 Python
django 取消csrf限制的实例
2020/03/13 Python
Python使用扩展库pywin32实现批量文档打印实例
2020/04/09 Python
美国全球旅游运营商:Pacific Holidays
2018/06/18 全球购物
易程科技软件测试笔试
2013/03/24 面试题
【魔兽争霸3重制版】原版画面与淬火MOD画面对比
2021/03/26 魔兽争霸
大专生自我鉴定范文
2013/10/01 职场文书
高中毕业生生活的自我评价
2013/12/08 职场文书
葛优非诚勿扰搞笑征婚台词
2014/03/17 职场文书
股东合作协议书范本
2014/04/14 职场文书
缓刑人员思想汇报500字
2014/09/12 职场文书
擅自离岗检讨书
2014/09/12 职场文书
保安2014年终工作总结
2014/12/06 职场文书
JavaScript实现外溢动态爱心的效果的示例代码
2022/03/21 Javascript