寫在前面
JS要實(shí)現(xiàn)下載功能,一般都是這么幾個(gè)過程:生成下載的URL,動態(tài)創(chuàng)建一個(gè)A標(biāo)簽,并將其href指向生成的URL,然后觸發(fā)A標(biāo)簽的單擊事件,這樣就會彈出下載對話框,從而實(shí)現(xiàn)了一個(gè)下載的功能。
這里所說的下載,有時(shí)候也可以理解為保存。出于安全考慮,JS肯定無法直接調(diào)用FileAPI寫文件到磁盤,但是卻可以通過下載來變相實(shí)現(xiàn)保存功能。
幾個(gè)備用知識點(diǎn)
2.1. JS觸發(fā)單擊事件
既然是用A標(biāo)簽?zāi)M,那么肯定要知道JS如何主動觸發(fā)單擊事件。
最簡單的觸發(fā)單擊事件肯定是elem.click()
,平時(shí)在不需要考慮兼容性的場合我都是這么干的,但是畢竟這個(gè)方法有兼容性(具體兼容性如何沒做過測試),所以還是要掌握一個(gè)通用的方法。
以下代碼是網(wǎng)上比較容易找到的一段代碼,我在前面加了一段MouseEvent
的判斷:
/** * 觸發(fā)單擊事件 * @param elem 需要觸