`

[转]获取动态加载的图片大小的正确方法

阅读更多

原文地址:http://www.ideawu.net/blog/2011/07/%E8%8E%B7%E5%8F%96%E5%8A%A8%E6%80%81%E5%8A%A0%E8%BD%BD%E7%9A%84%E5%9B%BE%E7%89%87%E5%A4%A7%E5%B0%8F%E7%9A%84%E6%AD%A3%E7%A1%AE%E6%96%B9%E6%B3%95.html

 

有一些很容易出错的获取动态加载的图片的尺寸的方法, 之所以出错, 主要原因是:

  • 你在代码在图片从网页上下载完毕之前就调用了, 这种情况在本机开发时不太容易发现.
  • jQuery load()事件处理的BUG, 当图片是从浏览器缓存取得时, 获取的是错误的尺寸.

错误的代码是:

 

(错误)在添加了HTML之后立即调用代码获取尺寸

var html = '
';
$('#my_div').html(html);
var width = $('#my_div img').width(); // may return 0

(错误)用jQuery的load()事件处理

var html = '
';
var img = $(html);
html.load(function(){
    // return 0 if image is loaded from browser cache
    var width = img.width();
});
$('#my_div').html(img);

下面这种才是真正正确的方法, 使用JavaScript的Image类:

正确的方法

var html = '
';
$('#my_div').html(html);

var ni = new Image();
ni.onload = function(){
    var width = ni.width;
}
ni.src = img.attr(URL);
分享到:
评论

相关推荐

    JQ获取动态加载的图片大小的正确方法分享

    本文将详细介绍如何正确地使用jQuery来获取动态加载图片的大小。 首先,我们要了解为什么直接在添加HTML后立即获取图片尺寸会出现问题。这是因为当使用`$(‘#my_div img’).width()`这样的代码时,如果图片尚未完全...

    MFC动态加载和静态加载bmp类型图片

    本主题将深入探讨动态加载和静态加载这两种方法,以及如何解决代码中的内存泄漏问题。 首先,让我们理解静态加载和动态加载的概念。在MFC中,静态加载通常是指在程序编译时就已经知道了资源的ID,通过`CBitmap`类的...

    cxGridTableView图片列加载图片

    在这个事件中,可以通过`AInfo`参数获取当前单元格的信息,然后根据`AInfo.Column`的`ColumnType`判断是否需要加载图片,最后使用`cxGrid`的`LoadImageFromStream`方法加载图片到单元格。 5. **优化性能**:为了...

    VB获取图片大小.rar

    要获取图片的字节大小,我们可以使用`OpenTextFileReader`或`OpenBinaryFileReader`方法。不过,对于二进制文件如图片,`OpenBinaryFileReader`更为合适,因为它可以正确处理二进制数据。 2. **读取文件大小**: ...

    VC加载GIF动态图片方法

    在VC++(Visual C++)开发环境中,要实现界面中加载并显示GIF动态图片,你需要掌握以下几个关键知识点: 1. GDI+库的使用:GDI+是Windows API的一个扩展,它支持处理包括GIF在内的多种图像格式。在VC++中,我们需要...

    Vb获取图片尺寸大小

    在VB(Visual Basic)编程中,获取图片的尺寸大小,包括长度、宽度以及彩色位数,是常见的操作,尤其在处理图像数据时。这涉及到对图像文件的读取和解析,以便获取其元数据。以下将详细介绍如何在VB中实现这一功能。...

    IE9浏览器下 使用JS获取图片尺寸大小 的方法

    在IE9浏览器中,由于浏览器兼容性和安全策略的限制,获取图片尺寸大小的方法与现代浏览器有所差异。这篇文章将深入探讨如何使用JavaScript在IE9中获取图片的宽度和高度。我们还将提供一个示例代码,帮助你更好地理解...

    vue src动态加载请求获取图片的方法

    本篇文章将详细讲解如何在Vue中通过`src`属性动态加载本地图片和请求获取的图片。 一、加载本地图片 1. **图片目录结构**: 通常,我们会在项目的`src/assets`目录下存放项目中的静态资源,包括图片。例如,你...

    关于listview item重用导致图片重复加载 图片重新请求

    综上所述,解决ListView中图片重复加载的关键在于正确使用图片加载库,如Android-Universal-Image-Loader,通过合理的缓存策略和管理图片加载生命周期,确保图片只加载一次,并在item重用时正确显示。这不仅可以提高...

    JS获取文件大小方法小结

    本文主要探讨了三种不同的JS方法来获取文件大小,这些方法主要适用于浏览器环境,尤其是Internet Explorer。 方法一:利用ActiveX控件 在较旧版本的IE浏览器中,可以使用ActiveX技术来访问本地文件系统。ActiveX...

    android listview 加载图片错乱(错位)

    如果在getView()方法中没有正确地处理图片的加载和清除,可能导致新数据覆盖旧数据的图片,造成显示混乱。 2. **异步加载**:通常,图片不会立即加载,而是在后台线程进行。如果在ListView滚动时图片还未加载完成,...

    qt中QVBoxLayout,QHBoxLayout布局中实现控件的动态加载与显示

    在Qt编程中,布局管理是...总之,掌握在Qt中动态加载和显示控件的方法对于构建高效、可扩展的用户界面是十分必要的。通过学习和实践本项目,开发者能提升对Qt布局系统以及动态界面设计的理解,从而提升软件开发能力。

    Linux qtcreator动态加载动态链接库案例

    动态链接库允许我们在运行时加载代码,而不是在编译时,这有助于减少应用程序的大小和提高资源利用率。 首先,我们需要理解Linux下的动态链接库。在Linux中,动态链接库文件通常以`.so`(共享对象)为扩展名。例如...

    Unity3D动态加载资源

    在Unity3D游戏开发中,动态加载资源是一项关键的技术,它允许我们在游戏运行时按需加载资源,从而优化游戏性能,减少启动时的加载时间,提高用户体验。动态加载资源能够帮助我们实现更高效的内存管理,避免一次性...

    加载图片工具

    2. **内存缓存**:加载的图片会被存储在内存缓存中,以便下次再次请求同一图片时能快速获取,提高用户体验。这通常通过使用LRUCache或者更先进的缓存策略来实现。 3. **磁盘缓存**:考虑到内存资源有限,图片也会被...

    JS中通过url动态获取图片大小的方法小结(两种方法)

    下面,我们将探讨两种通过URL动态获取图片尺寸的方法。 1. 预加载获取图片大小 这种方法使用`Image`对象的`onload`事件来监听图片加载完成,然后回调函数中获取图片的宽度和高度。代码如下: ```javascript var ...

    jQuery图片懒加载代码

    - **响应式**:考虑不同设备的视口大小,确保图片在任何屏幕尺寸下都能正确加载。 - **动画效果**:在图片加载前后添加过渡动画,提升用户体验。 - **错误处理**:处理图片加载失败的情况,如提供备用图片或显示错误...

    js+ajax实现获取文件大小的方法.docx

    AJAX(Asynchronous JavaScript and XML)是一种创建动态网页的技术,允许在不重新加载整个页面的情况下与服务器交换数据并更新部分网页内容。在这里,我们利用 AJAX 向后台发送请求,将文件信息传递给服务器,由...

Global site tag (gtag.js) - Google Analytics