您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)Html5頁(yè)面如何實(shí)現(xiàn)下載文件,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
需求描述
接到的原始需求是這樣的,有一個(gè)H5頁(yè)面,頁(yè)面中有個(gè)“點(diǎn)擊下載”的按鈕,點(diǎn)擊之后,完成下載特定的apk。
大概是下面這樣的?:
需求分析
接到需求的時(shí)候我偷樂了一下,這個(gè)H5頁(yè)面最大的優(yōu)點(diǎn)是不在微信中使用(微信好坑,各種限制,基本上從微信瀏覽器里面實(shí)現(xiàn)直接下載apk是不太可能的),如果是在平常的瀏覽器的話,就簡(jiǎn)單多了。
功能實(shí)現(xiàn)
于是我想到了第一種,點(diǎn)擊下載按鈕的時(shí)候改變location.href。
方法一:
// 我隨便找了個(gè)apk的下載鏈接舉個(gè)例子 window.location.href = 'http://imtt.dd.qq.com/16891/26747DD8B125A8479AD0C9D22CA47BC9.apk?fsname=com.snda.wifilocating_4.2.91_3211.apk&csr=1bbd';
拿在瀏覽器里面試了下,多個(gè)安卓機(jī)型都可以走通,然后我美滋滋得交付了任務(wù),收拾收拾東西回家。
然后…………
截圖中所說的空白頁(yè)是因?yàn)槲腋淖僪ref為apk的下載鏈接,網(wǎng)頁(yè)打開的時(shí)候會(huì)停留在一個(gè)空白頁(yè),然后一般手機(jī)的狀態(tài)欄上會(huì)出現(xiàn)下載apk的進(jìn)度條。
既然不想出現(xiàn)空白頁(yè)面的話,那不直接打開一個(gè)頁(yè)面而改成在當(dāng)前頁(yè)打開就可以了。
這時(shí)候想到iframe,借助iframe可以在原頁(yè)面打開一個(gè)頁(yè)面。
方法二:
關(guān)鍵代碼:
var src = 'http://imtt.dd.qq.com/16891/26747DD8B125A8479AD0C9D22CA47BC9.apk?fsname=com.snda.wifilocating_4.2.91_3211.apk&csr=1bbd'; var iframe = document.createElement('iframe'); iframe.style.display = 'none'; iframe.src = "javascript: '<script>location.href=\"" + src + "\"<\/script>'"; document.getElementsByTagName('body')[0].appendChild(iframe);
使用iframe的話,既可以實(shí)現(xiàn)下載,又可以不重新打開頁(yè)面,并且,對(duì)原頁(yè)面的布局不會(huì)產(chǎn)生任何影響,最后我也是采取這種方案的。
方法三
第三種方法是偶然學(xué)到的,既然使用iframe可以,那使用form一定也是可以的,form的action也可以發(fā)請(qǐng)求。
于是改寫了下第二種方法:
var src = 'http://imtt.dd.qq.com/16891/26747DD8B125A8479AD0C9D22CA47BC9.apk?fsname=com.snda.wifilocating_4.2.91_3211.apk&csr=1bbd'; var form = document.createElement('form'); form.action = src; document.getElementsByTagName('body')[0].appendChild(form); form.submit();
以上的代碼也可以實(shí)現(xiàn)下載apk的需求。
關(guān)于“Html5頁(yè)面如何實(shí)現(xiàn)下載文件”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。