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