js檔案下載及命名
函數功能:實作主流瀏覽器的檔案下載功能;
相容性: >=IE10,Edge,chrome,firefox;
與後台的請求方式:GET請求, url攜帶參數 url? id=123(隱藏檔案真實路徑);
實作下載功能的前提是判斷瀏覽器類型:


browserType: function(){var userAgent = navigator.userAgent.toLowerCase();// Figure out what browser is being usedvar testCenter = { ie:function isIE() { //ie?if (!!window.ActiveXObject || "ActiveXObject" in window)return true;elsereturn false; }, edge : ()=>{ return /dge/.test(userAgent) }, chrome:()=>{ return /chrome/.test(userAgent)}, safari: ()=>{ return /safari/.test(userAgent)&&!(/chrome/.test(userAgent))}, opera: ()=>{ return /opera/.test(userAgent) } , msie: ()=>{ return /msie/.test(userAgent) && !/opera/.test(userAgent) }, mozilla: ()=>{ return /mozilla/.test(userAgent) && !/(compatible|webkit)/.test(userAgent) } };var browserObj = {};for(var k in testCenter){var result = testCenter[k]();var version = (userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/) || [])[1];if(result){ browserObj.browser = k; browserObj.version = version;return browserObj; } } },


dlFile : function(options) {var that = this;var url = options.url; url += "?" + $.param(options.data); //这里也可以不用jqvar xhr = new XMLHttpRequest(); //发起请求xhr.open('get', url); xhr.responseType = 'blob'; //规定响应为流文件 xhr.send(); xhr.onreadystatechange = function(){if (this.readyState == 4){if (this.status == '401' || this.status == '402') { //在这里可以进行一些请求失败的处理 }else if(this.status == 200) {var currentBrowserType = that.browserType(); //判断浏览器类型 见上述browserType函数;if(currentBrowserType.browser==='ie'&&(currentBrowserType.version == "10.0" || currentBrowserType.version == "11.0")){ //如果IE创建iframe对象来下载var href = window.URL.createObjectURL(this.response);var elemIF = document.createElement("iframe"); elemIF.src = "http://" + location.host + '/crowd-web/file/downloadFile?' + $.param(options.data); elemIF.style.display = "none"; document.body.appendChild(elemIF); }else if( currentBrowserType.browser==='edge'){ //如果edge使用h5的a标签的下载功能实现if (this.getResponseHeader("content-disposition")) {var fileName = decodeURI(this.getResponseHeader("content-disposition").replace("attachment;filename=", "")); }var href = "http://" + location.host + '/crowd-web/file/downloadFile?' + $.param(options.data);var $dllink = $('<a href="' + href + '" download="' + fileName + '" ></a>').appendTo(document.body); $dllink[0].click(); window.URL.revokeObjectURL(href); } else { //其他现代浏览器采用H5的a标签新特性实现var href = window.URL.createObjectURL(this.response);if (this.getResponseHeader("content-disposition")) {var fileName = decodeURI(this.getResponseHeader("content-disposition").replace("attachment;filename=", "")); }var $dllink = $('<a href="' + href + '" download="' + fileName + '" ></a>').appendTo(document.body); //initMouseEvent已经被放弃,直接使用a标签的dom节点click功能触发点击//var event = document.createEvent("MouseEvents");//event.initMouseEvent(// "click", true, false, window, 0, 0, 0, 0, 0// , false, false, false, false, 0, null//);//$dllink[0].dispatchEvent(event);$dllink[0].click(); window.URL.revokeObjectURL(href); //告诉浏览器可以释放该路径 } } } }; },

tools.dlFile({ data : {"fileId":item.id}, url :config.URL.downLoad, contentType : "application/json;chartset=utf-8", })

檔案下載的最佳方法選用:博文;
使用H5 a標籤的新特性:博文;
Blob物件及createObjectURL 與revokeObjectURL方法 : 博文;
提問:
a標籤模擬click事件: 你猜如下程式碼能觸發頁面調轉嗎?

<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></head><body><a href="http://www.baidu.com" id="hehe">百度</a><button>跳到百度</button><script src="bower_components/jquery/dist/jquery.js?1.1.11"></script><script>$("button").click(function(){ alert(123) $("#hehe").click(); })</script></body></html>

以上是js檔案下載及命名的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

註冊歐易賬戶的步驟如下:1.準備有效郵箱或手機號和穩定網絡。 2.訪問歐易官網。 3.進入註冊頁面。 4.選擇郵箱或手機號註冊,填寫信息。 5.獲取並填寫驗證碼。 6.同意用戶協議。 7.完成註冊並登錄,進行KYC和設置安全措施。

WebSocket服務器返回401後瀏覽器無反應的處理方法在使用Netty開發WebSocket服務器時,經常會遇到驗證token的需求。 �...

在Java中生成帶參數的微信小程序二維碼並將其顯示在HTML頁面上,是一個常見的需求。本文將詳細探討如何使用J...

關於JavaScript無法獲取用戶電腦硬件信息的原因探討在日常編程中,許多開發者會好奇為什麼JavaScript無法直接獲�...

關於JWT和Session的困惑與解答許多初學者在學習JWT和Session時,常常會對其本質和適用場景感到困惑。本文將圍繞J...

安全下載幣安APP需通過官方渠道:1. 訪問幣安官網,2. 找到並點擊APP下載入口,3. 選擇掃描二維碼、應用商店或直接下載APK文件的方式下載,確保鏈接和開發者信息真實,開啟雙重驗證保護賬戶安全。

USDT轉賬地址錯誤後,首先確認轉賬已發生,然後根據錯誤類型採取措施。 1.確認轉賬:查看交易記錄,獲取並在區塊鏈瀏覽器上查詢交易哈希值。 2.採取措施:若地址不存在,等待資金退回或聯繫客服;若為無效地址,聯繫客服並尋求專業幫助;若轉給了他人,嘗試聯繫收款方或尋求法律幫助。

歐盟MiCA合規認證,覆蓋50 法幣通道,冷存儲比例95%,零安全事件記錄。美國SEC持牌平台,法幣直購便捷,冷存儲比例98%,機構級流動性,支持大額OTC和自定義訂單,多級清算保護。
