摘要:可以使用和以方便用戶下載方式生成的內(nèi)容例如使用在線繪圖的應(yīng)用創(chuàng)建的照片。如果這個屬性存在被設(shè)置為,火狐優(yōu)先,像之前文件名的情況下,而則優(yōu)先屬性。
Canvas
// 下載Canvas元素的圖片 function downloadCanvasIamge(selector, name) { // 通過選擇器獲取canvas元素 var canvas = document.querySelector(selector) // 使用toDataURL方法將圖像轉(zhuǎn)換被base64編碼的URL字符串 var url = canvas.toDataURL("image/png") // 生成一個a元素 var a = document.createElement("a") // 創(chuàng)建一個單擊事件 var event = new MouseEvent("click") // 將a的download屬性設(shè)置為我們想要下載的圖片名稱,若name不存在則使用‘下載圖片名稱’作為默認名稱 a.download = name || "下載圖片名稱" // 將生成的URL設(shè)置為a.href屬性 a.href = url // 觸發(fā)a的單擊事件 a.dispatchEvent(event) } // 調(diào)用方式 // 參數(shù)一: 選擇器,代表canvas // 參數(shù)二: 圖片名稱,可選 downloadCanvasIamge("canvas", "圖片名稱")img標簽
// 下載 function downloadIamge(selector, name) { // 通過選擇器獲取img元素 var img = document.querySelector(selector) // 將圖片的src屬性作為URL地址 var url = img.src var a = document.createElement("a") var event = new MouseEvent("click") a.download = name || "下載圖片名稱" a.href = url a.dispatchEvent(event) } // 調(diào)用方式 // 參數(shù)一: 選擇器,代表img標簽 // 參數(shù)二: 圖片名稱,可選 downloadIamge("canvas", "圖片名稱")
總結(jié)
function downloadIamge(selector, name) { var image = new Image() // 解決跨域 Canvas 污染問題 image.setAttribute("crossOrigin", "anonymous") image.onload = function () { var canvas = document.createElement("canvas") canvas.width = image.width canvas.height = image.height var context = canvas.getContext("2d") context.drawImage(image, 0, 0, image.width, image.height) var url = canvas.toDataURL("image/png") // 生成一個a元素 var a = document.createElement("a") // 創(chuàng)建一個單擊事件 var event = new MouseEvent("click") // 將a的download屬性設(shè)置為我們想要下載的圖片名稱,若name不存在則使用‘下載圖片名稱’作為默認名稱 a.download = name || "下載圖片名稱" // 將生成的URL設(shè)置為a.href屬性 a.href = url // 觸發(fā)a的單擊事件 a.dispatchEvent(event) } image.src = document.querySelector(selector).src } // 調(diào)用方式 // 參數(shù)一: 選擇器,代表img標簽 // 參數(shù)二: 圖片名稱,可選 downloadIamge("canvas", "圖片名稱")
此屬性僅適用于同源 URLs。
可以使用 blob: URLs 和 data: URLs 以方便用戶下載 JavaScript 方式生成的內(nèi)容(例如使用在線繪圖的Web應(yīng)用創(chuàng)建的照片)。
如果HTTP頭的Content-Disposition:存在,并且賦予了一個和這個屬性不同的文件名,HTTP頭優(yōu)先于此屬性。
如果這個屬性存在 Content-Disposition 被設(shè)置為 inline,火狐優(yōu)先 Content-Disposition,像之前文件名??的情況下,而Chrome則優(yōu)先 download 屬性。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/106714.html
摘要:為什么要使用三級緩存如今的經(jīng)常會需要網(wǎng)絡(luò)交互,通過網(wǎng)絡(luò)獲取圖片是再正常不過的事了假如每次啟動的時候都從網(wǎng)絡(luò)拉取圖片的話,勢必會消耗很多流量。 為什么要使用三級緩存 如今的 Android App 經(jīng)常會需要網(wǎng)絡(luò)交互,通過網(wǎng)絡(luò)獲取圖片是再正常不過的事了 假如每次啟動的時候都從網(wǎng)絡(luò)拉取圖片的話,勢必會消耗很多流量。在當前的狀況下,對于非wifi用戶來說,流量還是很貴的,一個很耗流量的應(yīng)用...
摘要:介紹說明的包管理器,用于插件管理包括安裝卸載管理依賴等使用安裝插件命令提示符執(zhí)行插件名稱。總結(jié)安裝新建文件全局和本地安裝安裝插件新建文件通過命令提示符運行任務(wù)。 showImg(https://segmentfault.com/img/remote/1460000010873466); 前言 眾所周知目前比較火的工具就是gulp和webpack,但webpack和gulp卻有所不同,本...
摘要:線程在執(zhí)行過程中與進程還是有區(qū)別的。但是線程不能夠獨立執(zhí)行,必須依存在應(yīng)用程序中,由應(yīng)用程序提供多個線程執(zhí)行控制。從邏輯角度來看,多線程的意義在于一個應(yīng)用程序中,有多個執(zhí)行部分可以同時執(zhí)行。 關(guān)于js 1.原型鏈 2.AJAX請求數(shù)據(jù)時解決緩存的辦法3.js的繼承 ...
摘要:創(chuàng)建類中并沒有真正的類,但中有構(gòu)造函數(shù)和運算符。任何函數(shù)都可以用作構(gòu)造函數(shù),構(gòu)造函數(shù)必須使用運算符作為前綴來創(chuàng)建新的實例。調(diào)用構(gòu)造函數(shù)時不要丟掉關(guān)鍵字。這里使用基于原型的繼承,而沒有用到構(gòu)造函數(shù)和關(guān)鍵字。 1.創(chuàng)建類 JavaScript中并沒有真正的類,但JavaScript中有構(gòu)造函數(shù)和new運算符。構(gòu)造函數(shù)用來給實例對象初始化屬性和值。任何JavaScript函數(shù)都可以用作構(gòu)造函...
閱讀 482·2023-04-25 17:26
閱讀 1501·2021-08-05 09:58
閱讀 1967·2019-08-30 13:17
閱讀 952·2019-08-28 17:52
閱讀 1065·2019-08-26 18:27
閱讀 1421·2019-08-26 14:05
閱讀 3618·2019-08-26 14:05
閱讀 1594·2019-08-26 10:45