HTML5中的强制下载属性download使用实例解析


Posted in HTML / CSS onMay 12, 2016

HTML5 的 Download 属性用来强制浏览器下载对应文件,而不是打开。Chrome 和 Firefox 等浏览器太过于强大,也许是为了增强用户体验,当用户点击的资源文件可以被它们识别的时候(例如 pdf 会直接在浏览器打开,mp3、mp4 等媒体直接用浏览器内置播放器播放)。但有时候,用户其实是希望直接下载而不是在浏览器上看看,这时就可以加上这个属性,属性值会对下载的文件重命名:
<a href="downloadpdf.php" download="download.pdf">点击直接下载并保存成 download.pdf 文件</a>
如果你确定这个资源是用户肯定会下载的,就可以加上这个属性,还可以用 JS 或者手动改变想要保存的文件名。
在html里创建一个是下载链接是方便的,添加一个<a>标签和指向文件的href属性就行了。但是某些文件不会被下载(比如图像,pdf,txt,doc),相反,他们会在浏览器中被打开。
如果你的站点是有服务器端的,你可以通过配置.htaccess文件来使得那些文件可以被下载。如果你的站点是被WordPress.com或者github页面托管的(静态页面),那么轻考虑使用<a>标签的download属性

使用“Download”属性
download属性是html5规范的一部分,它表现为一个下载链接,而不是一个导航的链接。
download属性也允许你去重命名一个需要下载的文件。比如,一个文件存放在服务器上,如果这个文件是自动生成的,一般来说它被都命名为一个系统的数字和破折号的组合,例如acme-doc-2.0.1.txt,我们可以重命名这个下载文件的名字,用户下载后看到的文件名可以是一个比较好的名字,例如Acme Documentation (ver. 2.0.1).txt,像这样增加用户体验(不要忘记文件的拓展名)。

XML/HTML Code复制内容到剪贴板
  1. <a href="downloadpdf.php" download="download.pdf">点击直接下载并保存成 download.pdf 文件</a>  

HTML5中的强制下载属性download使用实例解析

可以看一下这个demo地址:http://tutsplus.github.io/download-attribute/index.html

一些注意:
Firefox考虑到安全问题,该下载文件必须是从自己的服务器或域名中的,否则将在浏览器中打开。
在Chrome和Opear中,如果说下载文件不是在子集的服务器或域名中,这些浏览器会忽视download属性,换句话来说,文件名不变。

提供后备方案:
在写本文的时候,download属性并没有在Safari和IE中实现,但是IE声称,download属性的实现已经在开发日程顶部了。
HTML5中的强制下载属性download使用实例解析

在这期间,我们可以使用一个后备方案去兼容那些浏览器。我们需要去下载Modernizr的download属性特征测试。
HTML5中的强制下载属性download使用实例解析

然后添加以下脚本:

JavaScript Code复制内容到剪贴板
  1. if ( ! Modernizr.adownload ) {   
  2.     var $link = $('a');   
  3.     $link.each(function() {   
  4.         var $download = $(this).attr('download');   
  5.         if (typeof $download !== typeof undefined && $download !== false) {   
  6.       var $el = $('<div>').addClass('download-instruction').text('Right-click and select "Download Linked File"');   
  7.       $el.insertAfter($(this));   
  8.         }   
  9.     });   
  10. }  

这个脚本是去测试浏览器是否支持download属性的,如果浏览器不支持的话,它就会想有download属性的<a>标签下面,插入一个有download-instruction类的<div>标签,并给予文字指引使用右键下载。
HTML5中的强制下载属性download使用实例解析

HTML / CSS 相关文章推荐
纯CSS实现的大小渐变、渐远效果
Apr 15 HTML / CSS
CSS3 transform的skew属性值图文详解
Jul 21 HTML / CSS
CSS3动画效果回调处理详解
Dec 10 HTML / CSS
CSS超出文本指定宽度用省略号代替和文本不换行
May 05 HTML / CSS
纯css3使用vw和vh实现自适应的方法
Feb 09 HTML / CSS
CSS3自定义滚动条样式 ::webkit-scrollbar的示例代码详解
Jun 01 HTML / CSS
10种CSS3实现的loading动画,挑一个走吧?
Nov 16 HTML / CSS
html5简介_动力节点Java学院整理
Jul 07 HTML / CSS
canvas学习和滤镜实现代码
Aug 22 HTML / CSS
用canvas画心电图的示例代码
Sep 10 HTML / CSS
Html5踩坑记之mandMobile使用小记
Apr 02 HTML / CSS
血轮眼轮回眼特效 html+css
Mar 31 HTML / CSS
HTML5事件方法全部汇总
May 12 #HTML / CSS
详解HTML5中rel属性的prefetch预加载功能使用
May 06 #HTML / CSS
深入剖析HTML5 内联框架iFrame
May 04 #HTML / CSS
HTML5 Canvas绘制五星红旗
May 04 #HTML / CSS
字中字效果的实现【html5实例】
May 03 #HTML / CSS
html5需遵循的6个设计原则
Apr 27 #HTML / CSS
HTML5+Canvas+CSS3实现齐天大圣孙悟空腾云驾雾效果
Apr 26 #HTML / CSS
You might like
php+oracle 分页类
2006/10/09 PHP
destoon实现会员商铺中指定会员或会员组投放广告的方法
2014/08/21 PHP
CentOS6.5 编译安装lnmp环境
2014/12/21 PHP
Yii 使用intervention/image拓展实现图像处理功能
2019/06/22 PHP
各浏览器对link标签onload/onreadystatechange事件支持的差异分析
2011/04/27 Javascript
JavaScript定时器详解及实例
2013/08/01 Javascript
完美解决IE低版本不支持call与apply的问题
2013/12/05 Javascript
超级给力的JavaScript的React框架入门教程
2015/07/02 Javascript
基于jquery实现图片上传本地预览功能
2016/01/08 Javascript
在js中实现邮箱格式的验证方法(推荐)
2016/10/24 Javascript
Angular路由简单学习
2016/12/26 Javascript
angular forEach方法遍历源码解读
2017/01/25 Javascript
jquery获取下拉框中的循环值
2017/02/08 Javascript
Vue2学习笔记之请求数据交互vue-resource
2017/02/23 Javascript
详解express与koa中间件模式对比
2017/08/07 Javascript
使用vux实现上拉刷新功能遇到的坑
2018/02/08 Javascript
React 全自动数据表格组件——BodeGrid的实现思路
2019/06/12 Javascript
Vue中axios的封装(报错、鉴权、跳转、拦截、提示)
2019/08/20 Javascript
原生js实现简单轮播图
2020/10/26 Javascript
Python 提取dict转换为xml/json/table并输出的实现代码
2016/08/28 Python
python网络编程调用recv函数完整接收数据的三种方法
2017/03/31 Python
python+selenium打印当前页面的titl和url方法
2018/06/22 Python
Opencv-Python图像透视变换cv2.warpPerspective的示例
2019/04/11 Python
python实现PID算法及测试的例子
2019/08/08 Python
python实现登录密码重置简易操作代码
2019/08/14 Python
python统计字符串中字母出现次数代码实例
2020/03/02 Python
Python进程的通信Queue、Pipe实例分析
2020/03/30 Python
使用opencv中匹配点对的坐标提取方式
2020/06/04 Python
欧舒丹英国官网:购买欧舒丹护手霜等明星产品
2017/01/17 全球购物
英国男士时尚购物网站:Stuarts London
2017/10/22 全球购物
培训班主持词
2014/03/28 职场文书
2014年教师思想工作总结
2014/12/03 职场文书
公司更名通知函
2015/04/24 职场文书
2015年幼儿教师个人工作总结
2015/05/20 职场文书
使用CSS自定义属性实现骨架屏效果
2022/06/21 HTML / CSS
maven 解包依赖项中的文件的解决方法
2022/07/15 Java/Android