XMLHttpRequestEventTarget: load ã¤ãã³ã
Baseline
åºãå©ç¨å¯è½
ãã®æ©è½ã¯åºãå®è£ ããã¦ãããå¤ãã®ãã¼ã¸ã§ã³ã®ç«¯æ«ããã©ã¦ã¶ã¼ã§åä½ãã¾ãã2015å¹´7æä»¥éããã¹ã¦ã®ãã©ã¦ã¶ã¼ã§å©ç¨å¯è½ã§ãã
ã¡ã¢: ãã®æ©è½ã¯ã¦ã§ãã¯ã¼ã«ã¼å ã§å©ç¨å¯è½ã§ããããµã¼ãã¹ã¯ã¼ã«ã¼ã§ã¯ä½¿ç¨ã§ãã¾ããã
load ã¤ãã³ã㯠XMLHttpRequest ã®ãã©ã³ã¶ã¯ã·ã§ã³ãå®å
¨ã«å®äºããã¨ãã«çºè¡ããã¾ãã
æ§æ
ãã®ã¤ãã³ãåã addEventListener() çã®ã¡ã½ããã§ä½¿ç¨ããããã¤ãã³ããã³ãã©ã¼ããããã£ãè¨å®ããããã¦ãã ããã
addEventListener("load", (event) => { })
onload = (event) => { }
ã¤ãã³ãå
ProgressEvent ã§ãã Event ããç¶æ¿ãã¦ãã¾ãã
ã¤ãã³ãããããã£
親ã§ãã Event ããããããã£ãç¶æ¿ãã¦ãã¾ãã
lengthComputableèªåå°ç¨-
è«çå¤ã®ãã©ã°ã§ããã®ããã»ã¹ã§è¡ããã使¥ã®åè¨ã¨ããã§ã«è¡ããã使¥ã®éãè¨ç®å¯è½ãã©ããã示ãã¾ããè¨ãæããã°ã鲿ãè¨æ¸¬å¯è½ãã©ããã示ãã¾ãã
loadedèªåå°ç¨-
64 ããã符å·ãªãæ´æ°å¤ã§ããã®ããã»ã¹ã§æ¢ã«ä½æ¥ãè¡ã£ãéã示ãã¾ãã使¥ããæ¯çã¯ã
totalããã®ããããã£ã®å¤ã§å²ããã¨ã§ç®åºã§ãã¾ãã HTTP ã使ç¨ãã¦ãªã½ã¼ã¹ããã¦ã³ãã¼ãããå ´åããã㯠HTTP ã¡ãã»ã¼ã¸ã®æ¬æã®ã¿ãã«ã¦ã³ããããããã¼ããã®ä»ã®ãªã¼ãã¼ãããã¯å«ã¾ãã¾ããã totalèªåå°ç¨-
64 ããã符å·ãªãæ´æ°ã§ãåºç¤ã¨ãªãããã»ã¹ãå®è¡ä¸ã®ä½æ¥ã®ç·éã表ãã¾ãã HTTP ã使ç¨ãã¦ãªã½ã¼ã¹ããã¦ã³ãã¼ãããå ´åãããã¯
Content-Lengthï¼ã¡ãã»ã¼ã¸ã®æ¬æã®ãµã¤ãºï¼ã§ããããããã¼ããã®ä»ã®ãªã¼ãã¼ãããã¯å«ã¾ãã¾ããã
ä¾
>XMLHttpRequest ã§ã®ä½¿ãæ¹
HTML
<div class="controls">
<input
class="xhr success"
type="button"
name="xhr"
value="ã¯ãªãã¯ã§ XHR éå§ï¼æåï¼" />
<input
class="xhr error"
type="button"
name="xhr"
value="ã¯ãªãã¯ã§ XHR éå§ï¼ã¨ã©ã¼ï¼" />
<input
class="xhr abort"
type="button"
name="xhr"
value="ã¯ãªãã¯ã§ XHR éå§ï¼ä¸æ¢ï¼" />
</div>
<textarea readonly class="event-log"></textarea>
JavaScript
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("image.jpg");
});
xhrButtonError.addEventListener("click", () => {
runXHR("https://somewhere.org/i-dont-exist");
});
xhrButtonAbort.addEventListener("click", () => {
runXHR("image.jpg").abort();
});
çµæ
XMLHttpRequestUpload ã§ã®ä½¿ãæ¹
load ã¤ãã³ãã使ç¨ããã¨ãã¢ãããã¼ããæ£å¸¸ã«çµäºãããã¨ãæ¤åºãããã¨ãã§ãã¾ãããã¡ã¤ã«ãã¢ãããã¼ããã¦ããã°ã¬ã¹ãã¼ã表示ããå®å
¨ãªã³ã¼ãä¾ã«ã¤ãã¦ã¯ãã¡ã¤ã³ã® XMLHttpRequestUpload ãã¼ã¸ãåç
§ãã¦ãã ããã
// ã¢ãããã¼ããå®äºããããããã°ã¬ã¹ãã¼ãé表示ã«ãã
xhr.upload.addEventListener("load", (event) => {
progressBar.classList.remove("visible");
log.textContent = "Upload finished.";
abortButton.disabled = true;
});
仿§æ¸
| 仿§æ¸ |
|---|
| XMLHttpRequest > # event-xhr-load > |
| XMLHttpRequest > # handler-xhr-onload > |