html5属性详解,HTML5中的download属性详解

一、download属性是个什么?

如果我们想实现点击上面的下载按钮下载一张图片,你会如何实现?

我们可能会想到一个最简单的方法,就是直接按钮a标签链接一张图片,类似下面这样:

下载

但是,想法虽好,实际效果却不是我们想要的,因为浏览器可以直接浏览图片,因此,我们点击“下载”链接,并是不下载图片,而是在新窗口直接浏览图片。

于是,基本上,目前的实现都是放弃HTML策略,而是使用,例如php这样的后端语言,通过告知浏览器header信息,来实现下载。

header('Content-type: image/jpeg');

header("Content-Disposition: attachment; filename='download.jpg'");

然而,这种前后端都要操心的方式神烦,现在都流行前后端分离,还搅在一起太累了,感觉不会再爱了。

那有没有什么只需要前端动动指头就能实现下载的方式呢?有,就是本文要介绍的download属性。

例如,我们希望点击“下载”链接下载图片而不是浏览,直接增加一个download属性就可以:

下载

没错,你没有看错,就这么结束了

结果在Chrome浏览器下(FireFox浏览器因为跨域限制无效):

不仅如此,我们还可以指定下载图片的文件名:

下载

如果后缀名一样,我们还可以缺省,直接文件名:

下载

截图为虚,操作为实

Chrome下的截图效果示意:

一个大写的酷里!

二、浏览器兼容性和跨域策略

然而,caniuse展示的兼容性只是个笼统,根据鄙人的实地测试,事情要比看到的复杂。

主要表现在跨域策略的处理上,由于我手上没有IE13,所以,只能对比Chrome浏览器和FireFox浏览器:

如果需要下载的资源是跨域的,包括跨子域,在Chrome浏览器下,使用download属性是可以下载的,但是,并不能重置下载的文件的命名;而FireFox浏览器下,则download属性是无效的,也就是FireFox浏览器无论如何都不支持跨域资源的download属性下载。

而,如果资源是同域名的,则两个浏览器都是畅通无阻的下载,不会出现下载变浏览的情况。

是否支持download属性的监测

要监测当前浏览器是否支持download属性,一行JS代码就可以了,如下:

var isSupportDownload = 'download' in document.createElement('a');

三、结束语

除了图片资源,我们还可以是PDF资源,或者txt资源等等。尤其Chrome等浏览器可以直接打开PDF文件,使得此文件格式需要download处理的场景越来越普遍。

此HTML属性虽然非常实用和方便,但是兼容性制约了我们的大规模应用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/268490.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[新手及懒人适用]轻松恢复误Ghost的硬盘

首先感谢51CTO有这么好的网络平台,很荣幸本周成为推荐博客。在高兴的同时,倍感压力,毕竟,51CTO看得见的看不见的大牛太多,而自己需要完善的东西还太多太多............好在,我会坚持自己最初在51CTO写博的初…

c:forEach 如何输出序号

关键在于<c:forEach>的varStatus属性&#xff0c;具体代码如下&#xff1a; <table width"500" border"0" cellspacing"0" cellpadding"0"> <tr> <th>序号</th> <th>姓名</th> <…

HTML练习4制作京东登录页,day4 CSS属性和京东登录

1、盒子练习.div1{background-color: darkcyan;width: 100px;height: 100px;margin-left: 20px;margin-top: 20px;/*float: left;*/text-indent: 4em;}.f1{text-indent: 2em;}按时发达复活节啊奥斯卡房间里卡就分手了空间撒 阿发阿发阿发艾弗森adhfhkash发货咖啡来看哈反抗咯说…

Hibernate常见问题集锦

Hibernate常见问题集锦1问&#xff1a;Hibernate初始化时总是报错&#xff1a;java.lang.NoClassDefFoundErrorHibernate初始化时出现出错代码&#xff1a;java.lang.NoClassDefFoundError: net/sf/ehcache/CacheException答&#xff1a;这是新手常见问题。是因为使用默认设置时…

网络运维调查报告

网络运维 是IT管理的核心和重点部分&#xff0c;也是内容最多、最繁杂的部分&#xff0c;该阶段主要用于IT部门内部日常运营管理&#xff0c;涉及的对象分成两大部分&#xff0c;即IT业务系统和运维人员&#xff0c;该阶段的管理内容又可细分为七个子系统&#xff1a; 设备管理…

html css外接修改无效,HTML外部引用CSS文件为什么会不生效

HTML外部引用CSS文件为什么会不生效发布时间&#xff1a;2021-01-14 09:41:22来源&#xff1a;亿速云阅读&#xff1a;112作者&#xff1a;小新这篇文章将为大家详细讲解有关HTML外部引用CSS文件为什么会不生效&#xff0c;小编觉得挺实用的&#xff0c;因此分享给大家做个参考…

ASP.NET MVC 1.0 + spring.net 1.2.0.20288 + NHibernate 2.0.1.4000整合笔记(三)——NHibernate配置...

1、在CMS.App新增XML配置文件web_nhibernate.xml并设置为“嵌入的资源”2、在Web.config中<spring> -> <resource>加入配置&#xff1a;<resource uri"assembly://CMS.App/CMS.App/web_nhibernate.xml"/>3、web_nhibernate.xml中的代码&#xf…

html网页加密最终版,【原】记一次加密网页html的研究

某次web编程,思考着辛辛苦苦编写的web别人 右键查看源码不就一目了然了&#xff1f;当然有些人会把script写入外部js引入&#xff0c;但也只是增加了查看源码的步骤。我就想把整个页面html都加密下&#xff0c;只是右键查看时&#xff0c;看不出代码。那么是否可行&#xff1f;…

修改hosts 流畅使用coursera

以管理员权限打开 C盘 -> Windows-> System32 -> drives -> etc -> hosts文件 在hosts文件最后写入  52.84.246.72 d3c33hcgiwev3.cloudfront.net 转载于:https://www.cnblogs.com/yezhaodan/p/7479251.html

用PHP忙了一晚上写的图片缩略和图片等比缩放函数

/* ---------------------------------------------------------------------- 函数:调整图片尺寸或生成缩略图 修改:2009-8-8 返回:True/False 参数: $Image 需要调整的图片(含路径) $Dw450 调整时最大宽度;缩略图时的绝对宽度 $Dh450 调整时最大高度;缩略图时…

简述css样式的三种引入html的方式,css-1,css的三种引入方式 基本选择器

css三种引入方式 和四种基本选择器/*内接样式*//*1 选择器 选中的是 ‘共性’*/span{color:green;font-size:30px;}/*组合选择器*/ul,ol{list-style:none;}/*2 类选择器 .类名 选中的也是共性 可以有多个*/.active{color:bluefont-size: 30px;}/*3.id选择器 选中的是‘特性’ #…

程序媛计划——python初级class5~13

列表和元组都是可迭代对象&#xff08;可以用于for in&#xff09; 列表 [] #添加列表元素&#xff1a; list.append(argu) #修改列表&#xff1a; list[2] 2017 #删除列表元素 Del list[2] #获取列表长度 len(list) #组合列表 >>>[1,2,3][4,6] [1,2,3,4,6] #定义有周…

html转excel有问题,html转excel

在工作中时常会遇到转换的问题&#xff0c;比如在浏览网站的时候看到一个不错的表格&#xff0c;但这个表格是网页上面的&#xff0c;该网站又不提供下载&#xff0c;这个时候该如何将这个表格下载下来&#xff0c;并且完整的将其转换到Excel中呢?下面8844就为你介绍如何将Htm…

[跟我学UML] UML中的对象图

缩略语UIS UML Infrastructure Specification UML基础结构规范UML Unifed Modeling Language 统一建模语言USS UML Superstructure Specification UML上层结构规范参考资料《UML Infrastructure Specification, v2.2》《UML Superstructure Specifica…

解决移动端 手机号input 属性为 number,maxlength无效情况

<input type"number" oninput"if(value.length>11)valuevalue.slice(0,11)" /> 转载于:https://www.cnblogs.com/qq735675958/p/7483538.html

计算机无法安装hp网络打印机,安装HP网络打印机步骤

打印机在连接上网线以后会通过路由器的DHCP服务自动设置一个IP&#xff0c;但是此IP不一定与你的计算机的IP处在同一个IP段(同段IP为192.168.0.***&#xff0c;即前三位相同(不一定为192.168.0)&#xff0c;只有最后一位不同)&#xff0c;IP不在同一段是无法连接的。此时应手动…