如何解决谷歌浏览器下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 打印界面的CSS居中代码适用所有浏览器
Mar 19 Javascript
jQuery+css实现的蓝色水平二级导航菜单效果代码
Sep 11 Javascript
jquery判断当前浏览器的实现代码
Nov 07 Javascript
浅谈jQuery中hide和fadeOut的区别 show和fadeIn的区别
Aug 18 Javascript
用AngularJS来实现监察表单按钮的禁用效果
Nov 02 Javascript
JS实现的系统调色板完整实例
Dec 21 Javascript
jQuery实现上下滚动公告栏详细代码
Nov 21 jQuery
Vue组件通信中非父子组件传值知识点总结
Dec 05 Javascript
vue使用自定义事件的表单输入组件用法详解【日期组件与货币组件】
Jun 01 Javascript
vue引入静态js文件的方法
Jun 20 Javascript
js实现全选和全不选功能
Jul 28 Javascript
vue实现简易音乐播放器
Aug 14 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中在数据库中保存Checkbox数据(1)
2006/10/09 PHP
PHP的一个完整SMTP类(解决邮件服务器需要验证时的问题)
2006/10/09 PHP
php cli模式学习(PHP命令行模式)
2013/06/03 PHP
php数组合并的二种方法
2014/03/21 PHP
PHP操作路由器实现方法示例
2019/04/27 PHP
jQuery 开发者应该注意的9个错误
2012/05/03 Javascript
JS图片根据鼠标滚动延时加载的实例代码
2013/07/13 Javascript
百度UEditor编辑器如何关闭抓取远程图片功能
2015/03/03 Javascript
jQuery1.9+中删除了live以后的替代方法
2016/06/17 Javascript
jQuery+HTML5实现WebGL高性能烟花绽放动画效果【附demo源码下载】
2017/08/18 jQuery
Vue.js表单标签中的单选按钮、复选按钮和下拉列表的取值问题
2017/11/22 Javascript
微信小程序实现打开内置地图功能【附源码下载】
2017/12/07 Javascript
Webpack devServer中的 proxy 实现跨域的解决
2018/06/15 Javascript
QQ跳转支付宝并自动领红包脚本(最新)
2018/06/22 Javascript
Angular6笔记之封装http的示例代码
2018/07/27 Javascript
express 项目分层实践详解
2018/12/10 Javascript
angular2 NgModel模块的具体使用方法
2019/04/10 Javascript
详解微信小程序用定时器实现倒计时效果
2019/04/30 Javascript
JavaScript 中的无穷数(Infinity)详解
2020/02/13 Javascript
Vue的Options用法说明
2020/08/14 Javascript
[01:01:52]DOTA2-DPC中国联赛正赛 iG vs LBZS BO3 第一场 3月4日
2021/03/11 DOTA
linux系统使用python监测系统负载脚本分享
2014/01/15 Python
详解如何用OpenCV + Python 实现人脸识别
2017/10/20 Python
Python 将Matrix、Dict保存到文件的方法
2018/10/30 Python
python 利用pandas将arff文件转csv文件的方法
2019/02/12 Python
Django中URL的参数传递的实现
2019/08/04 Python
男女时尚与复古风格在线购物:RoseGal(全球免费送货)
2017/07/19 全球购物
Boom手表官网:瑞典手表品牌,设计你的手表
2019/03/11 全球购物
SQL Server 2000数据库的文件有哪些,分别进行描述。
2015/11/09 面试题
高三自我鉴定怎么写
2013/10/19 职场文书
大学生物业管理求职信
2013/10/24 职场文书
大学校庆邀请函
2014/01/11 职场文书
大学生最新职业生涯规划书范文
2014/01/12 职场文书
物控部经理职务说明书
2014/02/25 职场文书
英文投诉信格式
2015/07/03 职场文书
Python 中random 库的详细使用
2021/06/03 Python