XMLHttpRequestEventTarget: loadstart 事件

注意:此功能在 Web Workers 中可用,但 Service Workers 除外。

loadstart 事件在請求開始載入資料時觸發。

語法

在諸如 addEventListener() 之類的方法中使用事件名稱,或設定事件處理程式屬性。

js
addEventListener("loadstart", (event) => { })

onloadstart = (event) => { }

事件型別

一個 ProgressEvent。繼承自 Event

Event ProgressEvent

事件屬性

除了下面列出的屬性之外,父介面 Event 的屬性也可使用。

lengthComputable 只讀

一個布林值,指示底層程序的待完成總工作量以及已完成工作量的可計算性。換句話說,它告知進度是否可衡量。

loaded 只讀

一個 64 位無符號整數值,表示底層程序已完成的工作量。透過將此屬性的值除以 total,可以計算出已完成工作的比例。使用 HTTP 下載資源時,此值僅包含 HTTP 訊息的正文,不包括標頭和其他開銷。

total 只讀

一個 64 位無符號整數,表示底層程序正在執行的總工作量。使用 HTTP 下載資源時,這對應於 Content-Length(訊息正文的大小),不包括標頭和其他開銷。

示例

與 XMLHttpRequest 的用法

HTML

html
<div class="controls">
  <input
    class="xhr success"
    type="button"
    name="xhr"
    value="Click to start XHR (success)" />
  <input
    class="xhr error"
    type="button"
    name="xhr"
    value="Click to start XHR (error)" />
  <input
    class="xhr abort"
    type="button"
    name="xhr"
    value="Click to start XHR (abort)" />
</div>

<textarea readonly class="event-log"></textarea>

JavaScript

js
const xhrButtonSuccess = document.querySelector(".xhr.success");
const xhrButtonError = document.querySelector(".xhr.error");
const xhrButtonAbort = document.querySelector(".xhr.abort");
const log = document.querySelector(".event-log");

function handleEvent(e) {
  log.textContent = `${log.textContent}${e.type}: ${e.loaded} bytes transferred\n`;
}

function addListeners(xhr) {
  xhr.addEventListener("loadstart", handleEvent);
  xhr.addEventListener("load", handleEvent);
  xhr.addEventListener("loadend", handleEvent);
  xhr.addEventListener("progress", handleEvent);
  xhr.addEventListener("error", handleEvent);
  xhr.addEventListener("abort", handleEvent);
}

function runXHR(url) {
  log.textContent = "";

  const xhr = new XMLHttpRequest();
  addListeners(xhr);
  xhr.open("GET", url);
  xhr.send();
  return xhr;
}

xhrButtonSuccess.addEventListener("click", () => {
  runXHR("example-image.jpg");
});

xhrButtonError.addEventListener("click", () => {
  runXHR("https://example.com/notfound.jpg");
});

xhrButtonAbort.addEventListener("click", () => {
  runXHR("example-image.jpg").abort();
});

結果

與 XMLHttpRequestUpload 的用法

您可以使用 loadstart 事件來檢測上傳的開始。有關上傳檔案並顯示進度條的完整程式碼示例,請參閱 XMLHttpRequestUpload 頁。

js
// When the upload starts, we display the progress bar
xhr.upload.addEventListener("loadstart", (event) => {
  progressBar.classList.add("visible");
  progressBar.value = 0;
  progressBar.max = event.total;
  log.textContent = "Uploading (0%)…";
  abortButton.disabled = false;
});

規範

規範
XMLHttpRequest
# event-xhr-loadstart
XMLHttpRequest
# handler-xhr-onloadstart

瀏覽器相容性

api.XMLHttpRequest.loadstart_event

api.XMLHttpRequestUpload.loadstart_event

另見