HTML5中的強(qiáng)制下載屬性download使用實(shí)例解析

HTML5 的 Download 屬性用來(lái)強(qiáng)制瀏覽器下載對(duì)應(yīng)文件,而不是打開。Chrome 和 Firefox 等瀏覽器太過(guò)于強(qiáng)大,也許是為了增強(qiáng)用戶體驗(yàn),當(dāng)用戶點(diǎn)擊的資源文件可以被它們識(shí)別的時(shí)候(例如 pdf 會(huì)直接在瀏覽器打開,mp3、mp4 等媒體直接用瀏覽器內(nèi)置播放器播放)。但有時(shí)候,用戶其實(shí)是希望直接下載而不是在瀏覽器上看看,這時(shí)就可以加上這個(gè)屬性,屬性值會(huì)對(duì)下載的文件重命名:
<a href="downloadpdf.php" download="download.pdf">點(diǎn)擊直接下載并保存成 download.pdf 文件</a>
如果你確定這個(gè)資源是用戶肯定會(huì)下載的,就可以加上這個(gè)屬性,還可以用 JS 或者手動(dòng)改變想要保存的文件名。
在html里創(chuàng)建一個(gè)是下載鏈接是方便的,添加一個(gè)<a>標(biāo)簽和指向文件的href屬性就行了。但是某些文件不會(huì)被下載(比如圖像,pdf,txt,doc),相反,他們會(huì)在瀏覽器中被打開。
如果你的站點(diǎn)是有服務(wù)器端的,你可以通過(guò)配置.htaccess文件來(lái)使得那些文件可以被下載。如果你的站點(diǎn)是被WordPress.com或者github頁(yè)面托管的(靜態(tài)頁(yè)面),那么輕考慮使用<a>標(biāo)簽的download屬性
使用“Download”屬性
download屬性是html5規(guī)范的一部分,它表現(xiàn)為一個(gè)下載鏈接,而不是一個(gè)導(dǎo)航的鏈接。
download屬性也允許你去重命名一個(gè)需要下載的文件。比如,一個(gè)文件存放在服務(wù)器上,如果這個(gè)文件是自動(dòng)生成的,一般來(lái)說(shuō)它被都命名為一個(gè)系統(tǒng)的數(shù)字和破折號(hào)的組合,例如acme-doc-2.0.1.txt,我們可以重命名這個(gè)下載文件的名字,用戶下載后看到的文件名可以是一個(gè)比較好的名字,例如Acme Documentation (ver. 2.0.1).txt,像這樣增加用戶體驗(yàn)(不要忘記文件的拓展名)。
- <a href="downloadpdf.php" download="download.pdf">點(diǎn)擊直接下載并保存成 download.pdf 文件</a>
可以看一下這個(gè)demo地址:http://tutsplus.github.io/download-attribute/index.html
一些注意:
Firefox考慮到安全問(wèn)題,該下載文件必須是從自己的服務(wù)器或域名中的,否則將在瀏覽器中打開。
在Chrome和Opear中,如果說(shuō)下載文件不是在子集的服務(wù)器或域名中,這些瀏覽器會(huì)忽視download屬性,換句話來(lái)說(shuō),文件名不變。
提供后備方案:
在寫本文的時(shí)候,download屬性并沒有在Safari和IE中實(shí)現(xiàn),但是IE聲稱,download屬性的實(shí)現(xiàn)已經(jīng)在開發(fā)日程頂部了。
在這期間,我們可以使用一個(gè)后備方案去兼容那些瀏覽器。我們需要去下載Modernizr的download屬性特征測(cè)試。
然后添加以下腳本:
- if ( ! Modernizr.adownload ) {
- var $link = $('a');
- $link.each(function() {
- var $download = $(this).attr('download');
- if (typeof $download !== typeof undefined && $download !== false) {
- var $el = $('<div>').addClass('download-instruction').text('Right-click and select "Download Linked File"');
- $el.insertAfter($(this));
- }
- });
- }
這個(gè)腳本是去測(cè)試瀏覽器是否支持download屬性的,如果瀏覽器不支持的話,它就會(huì)想有download屬性的<a>標(biāo)簽下面,插入一個(gè)有download-instruction類的<div>標(biāo)簽,并給予文字指引使用右鍵下載。
相關(guān)文章
HTML5實(shí)現(xiàn)的輕量級(jí)繪制SVG輪廓線路徑動(dòng)畫插件特效源碼
是一段實(shí)現(xiàn)了五款輕量級(jí)繪制SVG輪廓線路徑動(dòng)畫效果代碼,本段代碼適應(yīng)于所有網(wǎng)頁(yè)使用,有需要的朋友們可以前來(lái)下載使用2016-05-16html5 實(shí)現(xiàn)客戶端驗(yàn)證上傳文件的大小(簡(jiǎn)單實(shí)例)
下面小編就為大家?guī)?lái)一篇html5 實(shí)現(xiàn)客戶端驗(yàn)證上傳文件的大小(簡(jiǎn)單實(shí)例)。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-05-15html5基于鼠標(biāo)滾動(dòng)控制植樹生長(zhǎng)動(dòng)畫特效源碼
這是一款html5基于鼠標(biāo)滾動(dòng)控制植樹生長(zhǎng)動(dòng)畫特效源碼,伴隨著鼠標(biāo)滾輪的滾動(dòng)可呈現(xiàn)出樹木生長(zhǎng)的動(dòng)畫效果。整體動(dòng)畫漸變效果流暢自然2016-05-13- 下面小編就為大家?guī)?lái)一篇【HTML5】Canvas繪制簡(jiǎn)單圖片教程。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧,祝大家游戲愉快哦2016-05-13
HTML5實(shí)現(xiàn)頁(yè)面切換激活的PageVisibility API使用初探
這篇文章主要介紹了HTML5實(shí)現(xiàn)頁(yè)面切換激活的PageVisibility API使用初探,PageVisibility可以使我們?cè)谇袚Q瀏覽器tab頁(yè)面時(shí)自動(dòng)停止和播放視頻,需要的朋友可以參考下2016-05-13HTML5的Geolocation地理位置定位API使用教程
地理位置(Geolocation)是 HTML5 的重要特性之一,提供了確定用戶位置的功能,借助這個(gè)特性能夠開發(fā)基于位置信息的應(yīng)用,今天這篇文章就向大家介紹一下HTML5的Geolocation地理2016-05-12- 下面小編就為大家?guī)?lái)一篇HTML5事件方法全部匯總。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧2016-05-12
- HTML5全屏響應(yīng)式縮放切換幻燈片代碼是一款切換的時(shí)候當(dāng)前slide會(huì)平滑縮小并移動(dòng),下一個(gè)slide會(huì)從縮小狀態(tài)逐漸放大并移動(dòng)到屏幕中間,效果不錯(cuò)。需要的朋友前來(lái)下載源碼哦2016-05-10
- 下面小編就為大家?guī)?lái)一篇深入理解HTML的FormData對(duì)象。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧,祝大家游戲愉快哦2016-05-17