如何解决谷歌浏览器下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 函数对象的多重身份
Jun 28 Javascript
javascript弹出窗口实现代码
Nov 12 Javascript
详解javascript获取url信息的常见方法
Dec 19 Javascript
js图片放大镜效果实现方法详解
Oct 28 Javascript
React复制到剪贴板的示例代码
Aug 22 Javascript
vue2利用Bus.js如何实现非父子组件通信详解
Aug 25 Javascript
vue使用ElementUI时导航栏默认展开功能的实现
Jul 04 Javascript
微信小程序实现单选功能
Oct 30 Javascript
jquery拖拽自动排序插件使用方法详解
Jul 20 jQuery
4 种滚动吸顶实现方式的比较
Apr 09 Javascript
js之切换全屏和退出全屏实现代码实例
Sep 09 Javascript
Vue数字输入框组件示例代码详解
Jan 15 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添加MySQL数据记录代码
2008/06/07 PHP
Zend Studio for Eclipse的java.lang.NullPointerException错误的解决方法
2008/12/06 PHP
LotusPhp笔记之:基于ObjectUtil组件的使用分析
2013/05/06 PHP
jquery 的 $("#id").html() 无内容的解决方法
2010/06/07 Javascript
仿jQuery的siblings效果的js代码
2011/08/09 Javascript
jQuery源码分析-03构造jQuery对象-工具函数
2011/11/14 Javascript
写给小白的JavaScript引擎指南
2015/12/04 Javascript
Vue.js基础知识汇总
2016/04/27 Javascript
一个简单不报错的summernote 图片上传案例
2016/07/11 Javascript
easyui-combobox 实现简单的自动补全功能示例
2016/11/08 Javascript
JS Testing Properties 判断属性是否在对象里的方法
2017/10/01 Javascript
Vue2.5通过json文件读取数据的方法
2018/02/27 Javascript
layui.tree组件的使用以及搜索节点功能的实现
2019/09/26 Javascript
如何解决vue在ios微信"复制链接"功能问题
2020/03/26 Javascript
python 读入多行数据的实例
2018/04/19 Python
详解Python中的测试工具
2019/06/09 Python
Python collections模块使用方法详解
2019/08/28 Python
Python3.7 pyodbc完美配置访问access数据库
2019/10/03 Python
Python中Subprocess的不同函数解析
2019/12/10 Python
重写django的model下的objects模型管理器方式
2020/05/15 Python
flask框架中的cookie和session使用
2021/01/31 Python
艺龙旅行网酒店预订:国内、港澳台酒店
2018/06/26 全球购物
美国饼干礼物和美食甜点购买网站:Cheryl’s
2020/05/28 全球购物
Kickers鞋英国官网:男士、女士和儿童鞋
2021/03/08 全球购物
params有什么用
2016/03/01 面试题
班组长安全职责
2014/01/05 职场文书
关于母亲节的感言
2014/02/04 职场文书
小学生手册家长评语
2014/04/16 职场文书
应聘销售主管的求职信
2014/04/26 职场文书
党员反对四风问题思想汇报
2014/09/12 职场文书
2014党委书记四风问题对照检查材料思想汇报
2014/09/22 职场文书
领导干部群众路线对照检查材料
2014/11/05 职场文书
优秀教育工作者事迹材料
2014/12/24 职场文书
2016年感恩节活动总结大全
2016/04/01 职场文书
python字符串的多行输出的实例详解
2021/06/08 Python
Z-Order加速Hudi大规模数据集方案分析
2022/03/31 Servers