国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > HTML5 > 正文

詳解Html5頁面實現下載文件(apk、txt等)的三種方式

2024-09-05 07:22:42
字體:
來源:轉載
供稿:網友

需求描述

接到的原始需求是這樣的,有一個H5頁面,頁面中有個“點擊下載”的按鈕,點擊之后,完成下載特定的apk。

大概是下面這樣的👇:

需求分析

接到需求的時候我偷樂了一下,這個H5頁面最大的優點是不在微信中使用(微信好坑,各種限制,基本上從微信瀏覽器里面實現直接下載apk是不太可能的),如果是在平常的瀏覽器的話,就簡單多了。

功能實現

于是我想到了第一種,點擊下載按鈕的時候改變location.href。

方法一:

// 我隨便找了個apk的下載鏈接舉個例子window.location.;

拿在瀏覽器里面試了下,多個安卓機型都可以走通,然后我美滋滋得交付了任務,收拾收拾東西回家。

然后…………

截圖中所說的空白頁是因為我改變href為apk的下載鏈接,網頁打開的時候會停留在一個空白頁,然后一般手機的狀態欄上會出現下載apk的進度條。

既然不想出現空白頁面的話,那不直接打開一個頁面而改成在當前頁打開就可以了。

這時候想到iframe,借助iframe可以在原頁面打開一個頁面。

方法二:

關鍵代碼:

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的話,既可以實現下載,又可以不重新打開頁面,并且,對原頁面的布局不會產生任何影響,最后我也是采取這種方案的。

方法三

第三種方法是偶然學到的,既然使用iframe可以,那使用form一定也是可以的,form的action也可以發請求。
于是改寫了下第二種方法:

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();

以上的代碼也可以實現下載apk的需求。

總結

其實第二和第三種方法是擴展發揮了iframe和form的用法,單獨來看,我們知道iframe可以在父頁面里嵌套子頁面,知道form的action可以發請求或者跳轉頁面,這是很常見的功能,但是不知道它們會被用在下載文件這個需求上,且產生的效果非常好。可見知識還是要融會貫通,舉一反三的。

寫這篇的時候我去查了下iframe,原來ajax等技術未出現的時候,有段時間業內常用的長輪詢的方法竟然就是借助的iframe,有興趣的也可以研究一下。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 罗田县| 广河县| 抚顺县| 禹州市| 体育| 鄂托克旗| 文水县| 棋牌| 城固县| 山东省| 湘乡市| 文安县| 霍林郭勒市| 三明市| 武平县| 乌兰浩特市| 阳曲县| 密山市| 宜昌市| 汉沽区| 磐石市| 普兰店市| 泰安市| 永清县| 遂溪县| 平武县| 兴国县| 牙克石市| 屏南县| 微山县| 阆中市| 营口市| 尚志市| 新津县| 鸡东县| 罗源县| 琼海市| 肇东市| 定远县| 长丰县| 灵寿县|