js中浅谈new Image

浅谈 JS 内存泄漏问题 什么是内存泄漏? 程序的运行需要内存。只要程序提出要求,操作系统或者运行时(runtime)就必须供给内存。 对于持续运行的服务进程(daemon),必须及时释放不再用到的内存。否则,内存占用越来越高,轻则影响系统性能:变慢,延迟大等 ,重则导致进程崩溃。 不再用到的内存,没有及时释放,就叫做内存泄漏(memory leak)。 内存泄漏的识别方法 1、使用快捷键 F12 或者 Ctrl+Shift+J 打开 Chrome 浏览器的「开发者工具」。 2、选择 Performance(老版为Timeline) 阅读详情
AI摘要

本文介绍了HTML中的Image对象使用方法,包括通过构造函数创建图像实例、设置图像属性如src和alt等,以及如何将图像实例添加到文档中显示。

  • 浅谈Image对象--new image

    先来个简单案例:

        <button id="btn">点击</button>
        <script type="text/javascript">
            var btn = document.querySelector('#btn')
            btn.addEventListener('click',function(){
                var new_img = new Image(300,300)/*宽高300*/
                new_img.src = `https://dss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/qrcode/zbios-09b6296ee6.png`
                document.body.appendChild(new_img)
            },false)
        </script>

    主要参考阮老师的文档:

    概述

    <img>元素用于插入图片,主要继承了 HTMLImageElement 接口。

    浏览器提供一个原生构造函数Image,用于生成HTMLImageElement实例。

    var img = new Image();
    img instanceof Image // true
    img instanceof HTMLImageElement // true
    

    Image构造函数可以接受两个整数作为参数,分别表示<img>元素的宽度和长度。

    // 语法
    Image(width, height)
    
    // 用法
    var myImage = new Image(100, 200);
    

    <img>实例的src属性可以定义图像的网址。

    var img = new Image();
    img.src = 'picture.jpg';
    

    新生成的<img>实例并不属于文档的一部分。如果想让它显示在文档中,必须手动插入文档。

    var img = new Image();
    img.src = 'image1.png';
    document.body.appendChild(img);
    

    除了使用Image构造,下面的方法也可以得到HTMLImageElement实例。

    • document.images的成员
    • 节点选取方法(比如document.getElementById)得到的<img>节点
    • document.createElement('img')生成的<img>节点
    document.images[0] instanceof HTMLImageElement
    // true
    
    var img = document.getElementById('myImg');
    img instanceof HTMLImageElement
    // true
    
    var img = document.createElement('img');
    img instanceof HTMLImageElement
    // true
    

    HTMLImageElement实例除了具有 Node、Element、HTMLElement 接口以外,还拥有一些独有的属性。这个接口没有定义自己的方法。

    特性相关的属性

    (1)HTMLImageElement.src

    HTMLImageElement.src属性返回图像的完整网址。

    // HTML 代码如下
    // <img width="300" height="400" id="myImg" src="http://example.com/pic.jpg">
    var img = document.getElementById('img');
    img.src // http://example.com/pic.jpg
    

    (2)HTMLImageElement.currentSrc

    HTMLImageElement.currentSrc属性返回当前正在展示的图像的网址。JavaScript 和 CSS 的 mediaQuery 都可能改变正在展示的图像。

    (3)HTMLImageElement.alt

    HTMLImageElement.alt属性可以读写<img>的 HTML 属性alt,表示对图片的文字说明。

    (4)HTMLImageElement.isMap,HTMLImageElement.useMap

    HTMLImageElement.isMap属性对应<img>元素的 HTML 属性ismap,返回一个布尔值,表示图像是否为服务器端的图像映射的一部分。

    HTMLImageElement.useMap属性对应<img>元素的 HTML 属性usemap,表示当前图像对应的<map>元素。

    (5)HTMLImageElement.srcset,HTMLImageElement.sizes

    HTMLImageElement.srcset属性和HTMLImageElement.sizes属性,分别用于读写<img>元素的srcset属性和sizes属性。它们用于<img>元素的响应式加载。srcset属性可以单独使用,但是sizes属性必须与srcset属性同时使用。

    // HTML 代码如下
    // <img srcset="example-320w.jpg 320w,
    //              example-480w.jpg 480w,
    //              example-800w.jpg 800w"
    //      sizes="(max- 320px) 280px,
    //             (max- 480px) 440px,
    //             800px"
    //      id="myImg"
    //      src="example-800w.jpg">
    var img = document.getElementById('myImg');
    img.srcset
    // "example-320w.jpg 320w,
    //  example-480w.jpg 480w,
    //  example-800w.jpg 800w"
    
    img.sizes
    // "(max- 320px) 280px,
    //  (max- 480px) 440px,
    //  800px"
    

    上面代码中,sizes属性指定,对于小于320px的屏幕,图像的宽度为280px;对于小于480px的屏幕,图像宽度为440px;其他情况下,图像宽度为800px。然后,浏览器会根据当前屏幕下的图像宽度,到srcset属性加载宽度最接近的图像。

    HTMLImageElement.width,HTMLImageElement.height

    width属性表示<img>的 HTML 宽度,height属性表示高度。这两个属性返回的都是整数。

    // HTML 代码如下
    // <img width="300" height="400" id="myImg" src="pic.jpg">
    var img = document.getElementById('img');
    img.width // 300
    img.height // 400
    

    如果图像还没有加载,这两个属性返回的都是0。

    如果 HTML 代码没有设置width和height属性,则它们返回的是图像的实际宽度和高度,即HTMLImageElement.naturalWidth属性和HTMLImageElement.naturalHeight属性。

    HTMLImageElement.naturalWidth,HTMLImageElement.naturalHeight

    HTMLImageElement.naturalWidth属性表示图像的实际宽度(单位像素),HTMLImageElement.naturalHeight属性表示实际高度。这两个属性返回的都是整数。

    如果图像还没有指定或不可得,这两个属性都等于0。

    var img = document.getElementById('img');
    if (img.naturalHeight > img.naturalWidth) {
      img.classList.add('portrait');
    }
    

    上面代码中,如果图片的高度大于宽度,则设为portrait模式。

    HTMLImageElement.complete

    HTMLImageElement.complete属性返回一个布尔值,表示图表是否已经加载完成。如果<img>元素没有src属性,也会返回true。

    HTMLImageElement.crossOrigin

    HTMLImageElement.crossOrigin属性用于读写<img>元素的crossorigin属性,表示跨域设置。

    这个属性有两个可能的值。

    • anonymous:跨域请求不要求用户身份(credentials),这是默认值。
    • use-credentials:跨域请求要求用户身份。
    // HTML 代码如下
    // <img crossorigin="anonymous" id="myImg" src="pic.jpg">
    var img = document.getElementById('img');
    img.crossOrigin // "anonymous"
    

    HTMLImageElement.referrerPolicy

    HTMLImageElement.referrerPolicy用来读写<img>元素的 HTML 属性referrerpolicy,表示请求图像资源时,如何处理 HTTP 请求的referrer字段。

    它有五个可能的值。

    • no-referrer:不带有referrer字段。
    • no-referrer-when-downgrade:如果请求的地址不是 HTTPS 协议,就不带有referrer字段,这是默认值。
    • origin:referrer字段是当前网页的地址,包含协议、域名和端口。
    • origin-when-cross-origin:如果请求的地址与当前网页是同源关系,那么referrer字段将带有完整路径,否则将只包含协议、域名和端口。
    • unsafe-url:referrer字段包含当前网页的地址,除了协议、域名和端口以外,还包括路径。这个设置是不安全的,因为会泄漏路径信息。

    HTMLImageElement.x,HTMLImageElement.y

    HTMLImageElement.x属性返回图像左上角相对于页面左上角的横坐标,HTMLImageElement.y属性返回纵坐标。

    事件属性

    图像加载完成,会触发onload属性指定的回调函数。

    // HTML 代码为 <img src="example.jpg" onload="loadImage()">
    function loadImage() {
      console.log('Image is loaded');
    }
    

    图像加载完成,会触发onerror属性指定的回调函数。

    // HTML 代码为 <img src="image.gif" onerror="myFunction()">
    function myFunction() {
      console.log('There is something wrong');
    }

    .

H5 图片系列—new Image()加载图片是否会有缓存,从而img标签获取同一数据源显示时使用该缓存数据? new Image() 加载图片后,浏览器会利用缓存,避免重复下载相同的图片。Vue 中的会使用图片的 URL,如果该 URL 被缓存,浏览器会直接从缓存中加载,无需再次发起网络请求。 阅读详情

相关推荐

Selection Result,SAP 授权默认值维护里最容易被低估的一块屏幕

SAP授权维护中,Selection Result左侧区域常被忽视,实则是关键入口。该区域显示应用对象的技术名称、维护状态等核心信息,帮助判断授权默认值完整性。支持表格和层级两种视图:表格适合技术排查,可横向对比不同应用类型;层级更接近菜单结构,便于业务理解。该区域还包含管理属性(包、负责人等),为治理和审计提供证据链。技术类型ID(如TRAN/FUNC)能快速识别对象性质,避免仅依赖菜单文本导致的误判。开发人员应在交付应用时同步维护授权默认值,而非事后补漏。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1936

js的 new image()用法

创建一个Image对象:var a=new Image();    定义Image对象的src: a.src=”xxx.gif”;    这样做就相当于给浏览器缓存了一张图片。 图像对象: 建立图像对象:图像对象名称=new Image([宽度],[高度]) 图像对象的属性: border complete height hspace lowsrc name src vspace width...

余百炼的博客 6万+

基于SpringBoot与MyBatis的校园二手交易平台:从架构设计到部署上线的全链路实战解析

在Java Web开发领域,SpringBoot与MyBatis的组合已成为构建企业级应用的主流技术选型。SpringBoot通过约定大于配置的理念,极大地简化了项目初始化和部署流程;而MyBatis作为半自动化的ORM框架,则让开发者能够灵活控制SQL,便于性能优化与问题排查。这一技术栈的核心价值在于,它能高效支撑起一个具备完整业务逻辑的Web应用,例如一个典型的校园二手交易平台。此类平台涉及用户管理、商品发布、订单交易等核心业务场景,是理解如何将技术应用于解决实际业务问题的绝佳样本。通过剖析此类项目,开

weixin_33912638的博客 412

javascript学习之<img> 元素属性和方法

img>元素用于插入图片,主要继承了 HTMLImageElement 接口。浏览器提供一个原生构造函数Image,用于生成实例。Image构造函数可以接受两个整数作为参数,分别表示元素的宽度和高度。// 语法​// 用法实例的src属性可以定义图像的网址。新生成的实例并不属于文档的一部分。如果想让它显示在文档中,必须手动插入文档。除了使用Image构造,下面的方法也可以得到实例。的成员节点选取方法(比如)得到的节点生成的。

白话机器学习 2408

Java+小程序+MySQL实战:农产品商城全栈开发指南

在当今的软件开发领域,构建一个完整的电商系统是掌握全栈技术栈的绝佳实践。其核心在于理解前后端分离架构、RESTful API设计以及关系型数据库建模。从技术原理上看,后端负责业务逻辑与数据持久化,前端处理用户交互,数据库则确保数据的ACID特性。这种架构的价值在于职责清晰、易于维护和扩展,是构建高可用应用的基础。在应用场景上,电商系统广泛涵盖了用户认证、商品管理、订单处理与支付集成等核心模块。本文以农产品商城小程序为例,深入探讨了如何运用主流的Java Spring Boot、微信小程序和MySQL技术栈,

weixin_34258838的博客 330

使用WSL2安装ubuntu系统并配置深度学习环境

wsl2安装ubuntu部署深度学习环境的方法

u013358093的博客 2701

js---new Image()宿主对象

javascript 生成img标签的3种方式(对象、方法、html) <div id="d1"></div> <script> //HTML 方式一 function a() { document.getElementById("d1").innerHTML = "<img src='http://baike.bai...

muzidigbig的博客 1万+

基于ESP32-C3的便携式血氧仪硬件与算法实现

血氧饱和度(SpO₂)监测是生理参数无创检测的核心技术之一,其原理基于光电容积脉搏波(PPG)信号中红光与红外光吸收比值的动态变化。该技术依赖高精度模拟前端、稳定光学激励及实时数字信号处理能力,在消费级健康设备中面临功耗、体积与测量鲁棒性的多重约束。ESP32-C3凭借集成LEDC、12位ADC与低功耗双核架构,成为PPG终端的理想主控平台;结合定制化指夹式光学探头与比率法血氧算法,可实现非诊断级但趋势可靠的日常健康监测。本文围绕硬件电路设计、电源管理策略与嵌入式信号处理流程展开,覆盖从LED驱动、跨阻放大

weixin_29025501的博客 132

浅谈JavaScript错误

本文主要从前端开发者的角度谈一谈大多数前端开发者都会遇到的js错误,对错误产生的原因、发生阶段,以及如何应对错误进行分析、归纳和总结,希望得到一些有益的结论用来指导日常开发工作。 概念辨析 错误(Error)和异常(Exception) 对于Java来说错误和异常是两个相近但是不同的概念,而在JavaScript中可以认为错误和异常是等同的,js里只有Error关键字,并无Exception关键字...

weixin_34191845的博客 83

【EPICS学习记录】根据官方教程创建一个IOC应用

参照官网给出的IOC创建教程逐步操作完成了一个IOC应用的创建,官网教程中有部分过程表述的不清晰,自己摸索之后完成了IOC的创建,并把流程记录下来。其中有一些操作不是很理解,有问题或者建议欢迎指正。

yifeng_H的博客 3661

微纳加工技术中的自对准硅化物(Silicide)工艺:关键步骤与应用场景解析

本文深入解析了微纳加工技术中的自对准硅化物(Silicide)工艺,详细介绍了其关键步骤与应用场景。从表面清洁、金属沉积到两步退火法,全面拆解工艺全流程,并探讨了不同技术节点下的工艺演进。文章还提供了实际应用中的问题排查方法和新兴技术对Silicide工艺的挑战,为芯片制造领域的工程师提供了实用参考。

weixin_30613727的博客 429

浅谈FileReader

FileReader 对象允许Web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用 File 或 Blob对象指定要读取的文件或数据。 了解 https://developer.mozilla.org/zh-CN/docs/Web/API/FileReader 1、FileReader对象的方法FileReader 的实例拥有 4 个方法,其中 3 个用以读取文件,...

weixin_30457465的博客 118

从半导体物理到实战:手把手教你测量MOS管体二极管的Vf和Trr

本文深入探讨了MOSFET体二极管的关键参数测量方法,重点讲解了正向压降(Vf)和反向恢复时间(Trr)的测量原理与实战步骤。通过搭建测试平台,使用万用表和示波器等工具,手把手指导如何量化这些影响开关损耗和效率的核心参数,并对比分析了硅基与碳化硅(SiC)器件在体二极管性能上的显著差异。

n7o8p的博客 340

Hermes Agent:基于大语言模型的网页自动化任务实践指南

网页自动化技术通过模拟用户操作实现业务流程的自动执行,其核心原理是将人工操作转化为可编程的浏览器指令。传统工具如Selenium需要精确描述操作逻辑,而基于大语言模型的智能体技术实现了从'如何做'到'做什么'的范式转变。这种技术价值在于显著降低自动化门槛,使非技术人员也能通过自然语言指令完成复杂操作。在实际应用场景中,智能体能够自主规划执行路径,动态适应页面变化,特别适合数据采集、系统操作等重复性任务。本文以Hermes Agent为例,深入解析其如何结合大语言模型与浏览器自动化框架,实现网页交互任务的智能

weixin_34293059的博客 421

瑶芯技术分享 | 三相维也纳PFC功率器件损耗分析

电流的流通路径为:从A相电网正极流出,经过电感La,再经过二极管Da1流到直流侧电容C1,最终通过另外两相回到A相电网,具体流通路径如图2(a)所示。电流的流通路径为:从A相电网正极流出,经过电感La,再经过开关管Sa1和开关管Sa2的反向二极管流到直流侧中点N,最终通过另外两相回到A相电网,具体流通路径如图2(b)所示。通态损耗的产生是由电流正向流经IGBT 或者FRD上产生一定的压降,损耗就是正向电流和器件两端正向压降的乘积,开关损耗和反向恢复损耗则是跟开关过程中的直流电压和开关电流有关。

2301_76606324的博客 5729

AU混响终极指南:从‘干声’到‘空间感’,用总音轨和发送技巧打造专业人声

本文详细介绍了如何在Adobe Audition(AU)中使用混响效果器,通过总音轨和发送技巧将‘干声’转化为具有专业‘空间感’的人声。从混响基础原理到总线架构设置,再到精细控制和自动化调整,全面解析了提升音频质量的实用技巧,适用于音乐制作、播客和内容创作。

weixin_30512089的博客 331

前端文件下载全解析:从Content-Disposition到Blob实战

在Web开发中,文件下载是基础且高频的需求,其核心原理涉及HTTP协议与浏览器行为。浏览器通过解析响应头中的Content-Disposition字段来决定是内联显示文件还是触发下载,其中attachment指令能强制浏览器弹出下载对话框。这一机制对于提升用户体验和实现可靠的文件传输至关重要。在前端工程实践中,开发者常结合HTML5的download属性与JavaScript的Blob API来处理动态生成的文件或需要认证的资源,从而构建更灵活的应用。本文聚焦于文件下载链路中的关键环节,深入探讨如何通过前后

weixin_33672400的博客 573

微软商店报错“此产品当前不可用”?终极修复指南

微软商店报错“此产品当前不可用”?终极修复指南

安德洛夫 3808

使用new Image() 简单实现图片预加载

在 Vue 中实现图片预加载是一个简单而高效的过程,通常会通过生命周期钩子函数(如created)来管理。你可以使用创建图片对象,设置其src属性来实现图片的预加载,减少后续访问时的等待时间。具体实现根据自己项目来写。原文:https://juejin.cn/post/7441842559386583077。

gaotlantis的博客 2654

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

JS中img的写法

’' '<img class="goodsImg" alt="" src="/sort/'+content.cakePicture+'">'

二十一克阳光!的博客 2819

android 蓝牙通讯demo

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

js的 new image()

创建一个Image对象:var a=new Image(); 定义Image对象的src:a.src=”xxx.gif”; 这样做就相当于给浏览器缓存了一张图片。 图像对象: 建立图像对象:图像对象名称=new Image([宽度],[高度]) 图像对象的属性: border complete height hspace lowsrc name src vs...

weixin_30537391的博客 1620

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

new Image()的使用

今天在网上看素材,发现一个上传图片的功能没有后台,我顿时就傻了,这也可以做到,原来就是用new Image()这个来做到的,接下来分享一下代码: //下面用于图片上传预览功能 function setImagePreview(avalue) { var docObj=document.getElementById("doc"); var imgObj=document.getElement

荣默默的博客 7010

new Image()

建立图像对象:图像对象名称=new Image([宽度],[高度]) 图像对象的属性:border complete height hspace lowsrc name src vspace width 图像对象的事件:onabort onerror onkeydown onkeypress onkeyup onload var img=new Image(); img.src="17.png"; img.onload=function(){alert("img is load.

ahwangzc的博客 4182

为什么 new Image 预加载比 <img>直接加载好

预加载图片可以更好地控制加载过程,提升页面性能和用户体验,尤其是在需要加载大量图片或实现复杂逻辑的场景下,优势更加明显。:如果图片在页面上不可见(如隐藏的图片或未显示的轮播图),浏览器仍然会加载这些图片,浪费带宽和资源。:可以在页面加载时提前加载图片,当用户需要时(如点击按钮切换图片),图片已经加载完成,提升用户体验。:可以在任意时机(如页面加载完成后、用户交互时)触发图片加载,实现按需加载或延迟加载。:可以在加载图片前执行复杂的逻辑,例如根据设备分辨率加载不同尺寸的图片。如果需要预加载多张图片,使用。

liangshanbo1215的博客 1067

new Image() 预加载 为什么比 <img>直接加载要好?

虽然从技术上讲,直接在标签中加载图片和使用 new Image() 设置 src 都会触发相同的图片加载过程,但是 使用 new Image() 进行预加载 提供了更灵活的控制,使得你可以在页面渲染时避免图片加载阻塞,提升页面的加载速度和用户体验。

fans_x的博客 1119
下一篇: 媒体查询(media)
Thomas AlvaEdison
博客等级 码龄6年 344粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值