瀏覽器端建立可下載文件

function loadFile(fileName, content){
var aLink = document.createElement('a');
var blob = new Blob([content], {
    type: 'text/plain'
 });
var evt = new Event('click');
aLink.download = fileName;
aLink.href = URL.createObjectURL(blob);
aLink.click();
URL.revokeObjectURL(blob);
}

描述下代碼內容:瀏覽器

  • 建立 a 標籤
  • 使用 Blob 構造函數將文件內容編譯爲指定格式的二進制
  • 設置 download 屬性設置文件名稱
  • Blob 對象做爲 Url 也賦給 a 標籤,
  • 觸發標籤click
  • 回收內存

關於Blob

Blob 對象是一個字節序列。擁有 size 和 type 等屬性。初始化 Blob 接受的內容類型。安全

  • ArrayBuffer [TypedArrays] elements.
  • ArrayBufferView [TypedArrays] elements.
  • Blob elements.
  • DOMString [WebIDL] elements.

URL.createObjectURL & URL.revokeObjectURL()

URL.createObjectURL() 靜態方法會建立一個 DOMString,它的 URL 表示參數中的對象。這個 URL 的生命週期和建立它的窗口中的 document 綁定。這個新的URL 對象表示着指定的 File 對象或者 Blob 對象。app

DOMString:
一個UTF-16字符串,JavaScript 正是使用了這種編碼的字符串,因此 DOMString 直接被映射爲(is mapped directly to)函數

在每次調用 createObjectURL() 方法時,都會建立一個新的 URL 對象,即便你已經用相同的對象做爲參數建立過。當再也不須要這些 URL 對象時,每一個對象必須經過調用 URL.revokeObjectURL() 方法來釋放。瀏覽器會在文檔退出的時候自動釋放它們,可是爲了得到最佳性能和內存使用情況,你應該在安全的時機主動釋放掉它們。性能

關於事件

createEvent 的事件必需要使用 initEvent,可是這種方式已經不被推薦。編碼

相關文章
相關標籤/搜索