javascript更新元素加载延迟及图片src

JS实现图片延迟加载 在一些图片比较多的网站,往往会出现这样的问题:由于页面中的图片资源多,加上网速的不给力,导致页面的图片迟迟加载不出来,或者所有的图都是加载到半张的样子,让人非常不爽,这种情况导致了非常差的用户体验,最终会让用户失去耐心,使得该网站的流量流失,现在我们就来探讨一下如何解决这个问题。 阅读详情

问题描述

今天使用javascript改变图片的src,发现了俩个问题:
1.改变图片的src后,width和height还是原width和height。
2.javascript更新元素后,浏览器需要时间加载。
首先上代码:

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title>javascipt更新图片</title>
        <script type="text/javascript" src="js/jquery.min.js"></script>
        <script>
            function normal_change() {
                $("#img_have_height").attr("src", "img/open.jpg");
                $("#img_no_have").attr("src", "img/open.jpg");
                var img_have_height_height = $("#img_have_height").height();
                var img_no_have = $("#img_no_have").height();
                alert(img_have_height_height + " " + img_no_have);
            }

            function real_change() {
                var height_before = document.getElementById("img_have_height").naturalHeight;
                $("#img_have_height").attr("src", "img/open.jpg");
                var height_after = document.getElementById("img_have_height").naturalHeight;
                alert(height_before + " " + height_after);
            }

            function relay_go() {
                $("#img_have_height").attr("src", "img/open.jpg");
                setTimeout('$("#img_have_height").css("height", document.getElementById("img_have_height").naturalHeight);', 100);
            }
        </script>
    </head>

    <body>
        <img id="img_have_height" src="img/imut.jpg" style="height: 134px;" />
        <img id="img_no_have" src="img/imut.jpg" />
        <br />
        <button onclick="normal_change()">普通改变</button>
        <button onclick="real_change()">图片实际大小改变</button>
        <button onclick="relay_go()">更新后执行</button>
    </body>

</html>

开始界面:这里是我母校的俩个校徽,第一个有height属性,第二个没有。

点击“普通改变“:可以看到alert已经打印出来,但是图片还没有改变,而且显示两个图片的高度还是134px。

点击“确定”:确定后,发现有height属性高度和以前保持一致,而没有的则是原图片的宽高。

javascript改变图片的src或者input的value等更新元素的操作需要一定加载时间
javascript改变图片的src后,会继承改变之前图片设置的width和height属性

关于第二点,W3C school中有提到 http://www.w3school.com.cn/jsref/prop_img_src.asp
对于对付第二点来讲,在html5中有了新的方法 img.naturalHeight和img.naturalWidth 是获取图片源的实际高度和宽度。
不刷新页面后,点击“图片实际大小改变”:134是改变前图片源的实际大小,没问题,为什么改变后的图片源的实际大小是0?这是因为改变后的图片还没有加载成功,就开始输出了提示信息。

关于判断图片完全载入,这里有个不错的博客 http://www.cnblogs.com/snandy/p/3704938.html
我采用更加直接暴力的方法,而且通杀所有元素的载入问题,我加了一个延时,不过这样也有BUG,如果网速等原因造成特别慢的载入,我的方法就不好使了。
点击“更新后执行”


2017-12-6 重要更新

在测试环境中一直是没问题的,但是今天想了一想觉得还是不可以采用上面那种暴力的办法,万一图片太大或者是网速太慢都是问题。所以,在这里郑重道歉,我建议采用onload方法。
即:在img属性中采用onload方法,然后在该方法中对图片元素完全加载后的操作,修改后的代码:

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title>javascipt更新图片</title>
        <script type="text/javascript" src="../js/jquery.min.js"></script>
        <script>
            function img_change() {
                $("#img_no_load").attr("src", "../img/open.jpg");
                $("#img_have_load").attr("src", "../img/open.jpg");
            }

            function img_onload() {
                $("#img_have_load").attr("height", 300px);
            }
        </script>
    </head>

    <body>
        <img id="img_no_load" src="../img/imut.jpg" />
        <img id="img_have_load" onload="img_load()" src="../img/imut.jpg" />
        <br />
        <button onclick="img_change()">执行</button>
    </body>

</html>

可以看到,onload在改变图片源后,onload会再次执行。所以,我们可以把对图片尺寸的读写都放到这里面。

iframe异步加载和延迟加载 iframe异步加载:通常情况下,浏览器会按照HTML文档的顺序加载页面中的元素,而iframe标签内的内容会阻塞主页面的加载。为了解决这个问题,可以将iframe的src属性设置为空,而将实际需要加载的内容放在一个data-src属性中,然后使用JavaScript动态加载iframe内容。这样,主页面会先加载完成,用户可以先看到主页面的内容,然后再加载iframe内容,提升了页面的加载速度和用户体验。延迟加载:延迟加载是指将页面中的某些资源(如图片、脚本等)推迟到页面其他内容加载完成后再加载。 阅读详情

相关推荐

CloudCompare

分割点云:选中要分割的点云文件–>Segment–>左键框出要分割的点或者区域–>Segment Out–>Comfirm Segmentation,原点云文件被分割成两个结构,选中分割出来的remaining,右键delete即可。qSRA (Surface of Revolution Analysis):计算一个点云和一个假定旋转平面之间的距离(旋转平面用2D轮廓定义),距离计算好后,用户可以创建一个偏差的2D图或者圆柱或圆锥的投影。②表现为同样的对象或者至少有同样的形状。

xiaoyaolangwj的博客 4709

img动态改变src的参数,图片不及时更新

在js中 window.setInterval(getPic, 100);         function getPic(){                             $("#img1").attr('src',"${pageContext.request.contextPath}/image/iframe.jpg?time="+(new Date()).getTime(

雨中漫步 1万+

西门子1200,与V90和步科MD60第三方伺服PN通讯

需要注意的是回零方式的选择,因为V90是绝对值编码器,这里回零模式选择模式7,系统自动根据编码器反馈以及组态的机械参数,计算出轴的位置,并且掉电保持。在线访问中,找到对应的网卡,以及下面扫描到的设备,可以在线修改ip地址和profinet名称,注意一定要和组态中的完全一致。以上硬件组态上完成,主要是gsd文件导入后,添加硬件,建立连接,修改ip和profinet名称,添加报文。1- 博图V18内,设备组态,网络视图中,拖入V90以及MD60伺服,并与PLC创建连接。向厂家索要GSD文件,PN的描述文件。

weixin_37596954的博客 2463

前端必会的图片懒加载,你造吗?

一.何为懒加载:   在我们访问一个图片展示比较多的网页时,加载速度慢很多时候正是因为图片多导致,大量的img图片导致页面渲染的堵塞。当费了许多力气把全部图片和页面加载出来时而用户早已离去。另一方面,若用户只查看了网页的前面部分便离开,许多已经加载却因为处于网页底部而未呈现在视口区的图片,它们极大加重服务器压力了但是用户看都没看,白白浪费了性能。   为了解决上面的问题需要引入图片懒加载,懒加载其实很好理解,重点就是一个‘懒’字。当用户滚动相应可视区域,若可视区域有图片便加载,而在可视区域外未加载过的图片它

你好呀,很高兴你在看这里~ 2432

Stateflow使用C语言结构体,关于使用Stateflow调用外部C代码的教程介绍

无论是Simulink仿真,还是对模型做代码生成,已有C代码的调用都是我们经常会遇到的情形:如何调用现有的外部C代码?很多人首先想到的是S-Function。的确,S-Function提供了一种途径,可以让我们把C函数封装成Simulink模块在Simulink环境下运行。另外还有一种方式,叫做Legacy Code Tool,说白了也是S-Function,只是MATLAB提供了这样的接口便于用...

weixin_34947914的博客 2673

从Power到HO:一文搞懂主流脑图谱在DPABI里怎么选,让你的rs-fMRI分析更精准

本文深入解析了rs-fMRI分析中主流脑图谱(如Power、HO、AAL等)在DPABI中的科学选择策略,帮助研究者根据不同的神经科学研究目标优化分析流程。从解剖学图谱到功能连接图谱的特性对比,到DPABI实操中的多图谱分析工作流,提供了全面的方法论指导,助力提升静息态功能磁共振成像(rs-fMRI)研究的精准度和可重复性。

weixin_30654583的博客 403

图片的延迟加载

问题:后台返回字符串,需要渲染到一本线上书上 正则:let  reg_has_img = /&lt;img [^&gt;]*src=['"]([^'"]+)[^&gt;]*&gt;/gi; 解决:通过JS正则中的replace应用首先替换相应的 img标签的src为空,当翻到书的有图的页面后加载图片 实现: 首先捕获item中HtmlContent中img src中的内容并且把捕获内容pu...

coderMozart的博客 411

SMETANA 安装使用教程

关于SMETANA的安装和简单使用信息

qq_44940977的博客 1169

JS两种定时器与八种方法获取元素

1.循环执行:设置了等待时间,当时间到了的话,就会执行相应的方法,随后执行完,定时器并不会停止,而是每隔设置的时长重新执行,直到手动删除才停止。 var time1=window.setInterval("方法名或方法","延时"); //去掉定时器方法 window.clearInterval(time1); **以下实例在每隔1秒执行clock()函数,就在ID为clock的文本框刷新当前时间,同时包含了停止执行的按钮 <input type="text" id="clock"/>

qq_45904018的博客 1672

PRIDE数据库20年:2025更新

PRoteomics IDEntifications (PRIDE)数据库(https://www.ebi.ac.uk/pride/)是全球领先的基于质谱(MS)的蛋白质组学数据存储库,也是ProteomeXchange联盟的创始成员之一。本文总结了过去3年中PRIDE资源及相关工具的发展情况。提交到PRIDE存档的数据集数量平均每月达到约534个。主要得益于基础设施的持续改进,如用于超大数据集的新文件传输协议(Globus)、新的数据重新提交流程以及自动数据集验证过程。

多组・学・多组学 2063

基于毫米波雷达的智能风扇算法设计与实现

摘要:本文设计了一种基于毫米波雷达的智能风扇控制系统,采用FMCW雷达实现人体目标的精准检测与定位。系统通过距离FFT、速度FFT、CFAR检测和AoA估计构建完整的信号处理链路,并针对风扇叶片干扰设计了基于自相关函数的抗干扰算法。创新性地提出了人在开机、多人优先送风、摇头追踪等控制策略。研究采用MATLAB完成全链路算法仿真验证,并在STM32平台上实现实物系统。实验表明,该系统可实现0.15m测距精度和±60°方位角覆盖,有效解决了传统风扇的能源浪费和用户体验问题。本文提供了完整的MATLAB仿真代码和

huanghm88的专栏 404

在js中写html更改图片,关于html:使用JavaScript更新图片src?

我有一张图像(img.png),其内容在组合框更改后也会更改。问题是,当我更改页面上的组合框时,图像的内容不会更改。我试图像这样使用JavaScript:function SwitchPic(pic) {pic.src ="img.png";}img标签是:组合框标记为:Select a Number:abc第一次更改选项时它起作用,但是当我重新更改选项时,它保持图像不变。我该如何解决?您的函数没...

weixin_39522103的博客 892

项目经理必看:如何建立高效的相关方沟通机制?

你是否遇到过这样的场景?客户突然说“这不是我要的”,开发团队抱怨“需求总变”,高层追问“进度滞后为什么不早说”?这些问题的根源往往是——相关方沟通机制失效。本文聚焦“如何建立高效沟通机制”,覆盖从识别相关方到持续优化的全流程,适用于IT、产品、工程等各类项目。本文将按“理解问题→拆解核心概念→掌握工具方法→实战落地→未来趋势”的逻辑展开,重点讲解“相关方分析矩阵”“沟通计划表”等实用工具,并用“组织生日派对”的案例贯穿全文,让抽象概念变得可感知。相关方识别:用“权力/利益矩阵”找对人(像派对邀请关键客人)

项目管理的博客 1295

Javascript实现图片延迟加载

所以,对于图片过多的页面,为了加速页面加载速度,所以很多时候我们需要将页面内未出现在可视区域内的图片先不做加载, 等到滚动到可视区域后再去加载。对页面加载速度影响最大的就是图片,一张普通的图片可以达到几M的大小,而代码也许就只有几十KB。当页面图片很多时,页面的加载速度缓慢,几S钟内页面没有加载完成,也许会失去很多的用户。// 页面窗口改变 / 视窗大小改变时。// 1. 做纵向的可见判断。// 3. 防止图片重复加载。// 加载需要懒加载的图片。// 判断图片是否可见。// 横纵方向改变时。

qq_34306228的博客 1211

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

图片延迟加载、预加载

1、图片延迟加载 loading 属性 定义:延迟加载也称为惰性加载,即在长网页中延迟加载图像。用户滚动到它们之前,视口外的图像不会加载。这与图像预加载相反,在长网页上使用延迟加载将使网页加载更快。在某些情况下,它还可以帮助减少服务器负载。 举个例子来说明,当打开淘宝首页的时候,只有在浏览器窗口里的图片才会被加载,当你滚动首页向下滑的时候,进入视口内的图片才会被加载,而其它从未进入视口的图像不会也不会加载。那么延迟加载有什么好处:首先它能提升用户的体验,试想一下,如果打开页面的时候就将页面上所有的图片全部获

Kaizen的博客 911

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

TinyMce图片延迟加载

1.先来说说图片延迟加载 如果页面包含很多img标签,建议对图片做延迟加载,能加快网页显示速度 延迟加载也很简单,让所有img的src指向一张固定的图片,比如 http://www.baidu.com/img/bdlogo.gif 然后再设置 scr2 属性,让src2指向真正的图片地址,比如 http://gtms04.alicdn.com/tps/i4/T1s61XFB0fXXa

影魔的专栏 2880

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

jquery实现 图片延迟加载

图片延迟加载的大致的原理是,对于图片标签不是把图片的路径指定到src属性上,src属性指定一个非常小的空白图片,真正的图片地址设置到一个自定义的属性上,比如file,这样img标签就是这样:<img src="blank.jpg" file="00xx.jpg"/>或者背景直

6827

js图片延迟技术

图片延迟技术一般的思路 1.现将img元素对应的src路径设置为背景图片,而该img所对应的url路径存放在一个自设的属性中(以便进行src替换)。 2.获取卷轴的高度和窗口的高度 3循环需要延迟加载的img数组,获取img的高度,判断该元素是否在可视窗口内。若该元素在可视窗口内,则进行src替换 一下为测试代码 html .wrap {     margin: 20px aut

binglinglong2的专栏 971

DIY的JS延迟加载图片插件

      在很多时候,我们的页面会显示大量的图片,若要等待所有图片都呈现出来则会影响页面的响应速度。今天共享一个DIY的利用JS来延迟加载图片的插件。      大概的实现方式是:页面的定义元素img时,将src统一替换成自定义的一个属性名,如叫“originalSrc”,然后利用JS把给img的src设置为一个定义好的等待图片,然后在scroll事件触发时,把img元素位置正好在浏览器

小艺大志 1974

javascript 图片 懒加载、预加载

懒加载与预加载的基本概念。  懒加载也叫延迟加载:前一篇文章有介绍:JS图片延迟加载 延迟加载图片或符合某些条件时才加载某些图片。  预加载:提前加载图片,当用户需要查看时可直接从本地缓存中渲染。  两种技术的本质:两者的行为是相反的,一个是提前加载,一个是迟缓甚至不加载。懒加载对服务器前端有一定的缓解压力作用,预加载则会增加服务器前端压力。  懒加载的意义及实现方式有:   懒加载的主

ssisse的博客 3500

Swiper下的延迟加载

Swiper下的延迟加载

qq_39108466的博客 5411

JavaScript中实现延迟加载的技术

在JavaScript中,可以通过不同的方法实现延迟加载。然而,两种广泛使用的技术是使用Intersection Observer API来延迟加载图像,以及在滚动事件中实现内容的延迟加载。

u013951056的专栏 667

js延迟加载的方式有哪些?_延迟加载(Lazyload)三种实现方式

定义:延迟加载也称为惰性加载,即在长网页中延迟加载图像。用户滚动到它们之前,视口外的图像不会加载。这与图像预加载相反,在长网页上使用延迟加载将使网页加载更快。在某些情况下,它还可以帮助减少服务器负载。举个例子来说明,当打开淘宝首页的时候,只有在浏览器窗口里的图片才会被加载,当你滚动首页向下滑的时候,进入视口内的图片才会被加载,而其它从未进入视口的图像不会也不会加载。那么延迟加载有什么好处:【1】首...

weixin_39559119的博客 430

html5图片延迟加载效果,js图片延迟加载(Lazyload)三种实现方式

延迟加载也称为惰性加载,即在长网页中延迟加载图像。用户滚动到它们之前,视口外的图像不会加载。这与图像预加载相反,在长网页上使用延迟加载将使网页加载更快。在某些情况下,它还可以帮助减少服务器负载。延迟加载的优点:提升用户的体验,如果图片数量较大,打开页面的时候要将将页面上所有的图片全部获取加载,很可能会出现卡顿现象,影响用户体验。因此,有选择性地请求图片,这样能明显减少了服务器的压力和流量,也能够减...

weixin_42374930的博客 882

JS实现图片延迟加载(图片懒加载)

1

Rossbort的博客 1293

延迟加载图片控件--echo.js

echo.js的github地址:https://github.com/toddmotto/echo echo是一个独立的JavaScript、轻量级的、延迟图片加载插件,echo压缩后体积不到1k,使用html的标准data-*属性,echo支持IE8+。 一般将其放在滚动事件的下面: <img class="lazy" src="tool/img.gif" :da...

weixin_30530523的博客 200
上一篇: 海明码
下一篇: hibernate 中 Provided id of the wrong type for class 异常
dutong0321
博客等级 码龄15年 62粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值