如何解决谷歌浏览器下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小玩意 几个属性相加不能超过一个特定值.
Sep 29 Javascript
一个简单的Ext.XTemplate的实例代码
Mar 18 Javascript
Jquery实现列表(隔行换色,全选,鼠标滑过当前行)效果实例
Jun 09 Javascript
jquery+CSS3实现淘宝移动网页菜单效果
Aug 31 Javascript
JS中改变this指向的方法(call和apply、bind)
Mar 26 Javascript
jQuery CSS3自定义美化Checkbox实现代码
May 12 Javascript
深入浅出ES6之let和const命令
Aug 25 Javascript
jQuery Validation Engine验证控件调用外部函数验证的方法
Jan 18 Javascript
JS中双击和单击事件冲突的解决方法
Apr 09 Javascript
原生JS使用Canvas实现拖拽式绘图功能
Jun 05 Javascript
使用JS实现动态时钟
Mar 12 Javascript
Javascript文本框脚本实现方法解析
Oct 30 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下通过exec获得计算机的唯一标识[CPU,网卡 MAC地址]
2011/06/09 PHP
PHP中array_slice函数用法实例详解
2014/11/25 PHP
非集成环境的php运行环境(Apache配置、Mysql)搭建安装图文教程
2016/04/12 PHP
Yii多表联合查询操作详解
2016/06/02 PHP
图文详解phpstorm配置Xdebug进行调试PHP教程
2016/06/13 PHP
Jquery ui css framework
2010/06/28 Javascript
Tips 带三角可关闭的文字提示
2010/10/06 Javascript
JavaScript中的isXX系列是否继续使用的分析
2011/04/16 Javascript
16个最流行的JavaScript框架[推荐]
2011/05/29 Javascript
JsRender for index循环索引用法详解
2014/10/31 Javascript
jQuery中:password选择器用法实例
2015/01/03 Javascript
JS+CSS实现模仿浏览器网页字符查找功能的方法
2015/02/26 Javascript
Json按某个键的值进行排序
2016/12/22 Javascript
浅谈vue同一页面中拥有两个表单时,的验证问题
2018/09/18 Javascript
node版本管理工具n包使用教程详解
2018/11/09 Javascript
layer页面跳转,获取html子节点元素的值方法
2019/09/27 Javascript
Angular8引入百度Echarts进行图表分析的实现代码
2019/11/27 Javascript
JS Generator 函数的含义与用法实例总结
2020/04/08 Javascript
element-plus一个vue3.xUI框架(element-ui的3.x 版初体验)
2020/12/02 Vue.js
[49:17]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第三场 1月26日
2021/03/11 DOTA
Python通过websocket与js客户端通信示例分析
2014/06/25 Python
python使用clear方法清除字典内全部数据实例
2015/07/11 Python
python脚本爬取字体文件的实现方法
2017/04/29 Python
python实现协同过滤推荐算法完整代码示例
2017/12/15 Python
利用 python 对目录下的文件进行过滤删除
2017/12/27 Python
对numpy中的数组条件筛选功能详解
2018/07/02 Python
python内置函数sorted()用法深入分析
2019/10/08 Python
2021年值得向Python开发者推荐的VS Code扩展插件
2021/01/25 Python
演讲稿怎么写才完美
2014/01/02 职场文书
2015年幼儿园毕业感言
2014/02/12 职场文书
汽车机修工岗位职责
2014/03/06 职场文书
《沙漠中的绿洲》教学反思
2014/04/24 职场文书
煤矿安全生产标语
2014/06/06 职场文书
导游词300字
2015/02/13 职场文书
python+opencv实现目标跟踪过程
2022/06/21 Python
Nginx代理Redis哨兵主从配置的实现
2022/07/15 Servers