通常我們前端實(shí)現(xiàn)下載文件的做法是用一個(gè)a標(biāo)簽,href指向所需要下載的文件的地址。這需要用戶主動(dòng)點(diǎn)擊a標(biāo)簽才能下載,那么如何實(shí)現(xiàn)只通過(guò)執(zhí)行js代碼就下載文件呢?
W3C中很早就有element.click()這個(gè)規(guī)范,但是如果直接將href指向文件地址的a標(biāo)簽?zāi)Mclick的話瀏覽器會(huì)報(bào)一個(gè)警告,這是由于瀏覽器的安全檢查導(dǎo)致的。
正確實(shí)現(xiàn)的代碼是
var filename = 'hello'
var a = document.createElement('a')
var blob = new Blob(['Hello World!'])
a.download = filename
a.href = URL.createObjectURL(blob)
a.click()
URL.revokeObjectURL(blob)