ãã©ã¦ã¶ã¯å¤é¨ãªã½ã¼ã¹ â ã¹ã¯ãªãã, iframes, ç»å ãªã© â ã®èªã¿è¾¼ã¿ã追跡ãããã¨ãã§ãã¾ãã
ãã®ããã®ã¤ãã³ããï¼ã¤ããã¾ã:
onloadâ ãã¼ããæåãã,onerrorâ ã¨ã©ã¼ãçºçãã.
ã¹ã¯ãªããã®èªã¿è¾¼ã¿
å¤é¨ã¹ã¯ãªããã«ãã颿°ãå¼ã³åºãå¿ è¦ãããã¨ãã¾ãããã
次ã®ããã«ãã¦åçã«ãã¼ããããã¨ãã§ãã¾ãã:
let script = document.createElement('script');
script.src = "my.js";
document.head.append(script);
â¦ããããã©ããã£ã¦ãã®ã¹ã¯ãªããã®ä¸ã§å®£è¨ããã颿°ãå®è¡ããã®ã§ãããï¼ç§ãã¡ã¯ãã®ã¹ã¯ãªããã®èªã¿è¾¼ã¿ã¾ã§å¾ ã¤å¿ è¦ãããããã®å¾ã«åãã¦å¼ã³åºããã¨ãã§ãã¾ãã
script.onload
主ãªãã«ãã¼ã¯ load ã¤ãã³ãã§ããã¹ã¯ãªããããã¼ããããå®è¡ãããå¾ã«ããªã¬ããã¾ãã
let script = document.createElement('script');
// ä»»æã®ãã¡ã¤ã³ããä»»æã®ã¹ã¯ãªããããã¼ãã§ãã¾ã
script.src = "https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.3.0/lodash.js"
document.head.append(script);
script.onload = function() {
// ã¹ã¯ãªããã¯ãã«ãã¼é¢æ° "_" ãä½ãã¾ã
alert(_); // 颿°ã¯å©ç¨å¯è½ã§ã
};
ãã®ãããonload ã§ã¯ãã¹ã¯ãªãã夿°ã®å©ç¨ã颿°ã®å®è¡ãªã©ãå¯è½ã§ãã
â¦ããã¦ãä»®ã«èªã¿è¾¼ã¿ã失æãããã©ããªãã§ãããï¼ä¾ãã°ããã®ãããªã¹ã¯ãªããããªã(404 ã¨ã©ã¼)ãããã¯ãµã¼ãããªãããµã¼ãããã¦ã³ãã¦ããå ´åã§ãã
script.onerror
ã¹ã¯ãªããã®èªã¿è¾¼ã¿(å®è¡ã§ã¯ãªã)ä¸ã«çºçããã¨ã©ã¼ã¯ error ã¤ãã³ãã§è¿½è·¡ãããã¨ãå¯è½ã§ãã
ä¾ãã°ãåå¨ããªãã¹ã¯ãªãããè¦æ±ãã¦ã¿ã¾ããã:
let script = document.createElement('script');
script.src = "https://example.com/404.js"; // ãããªã¹ã¯ãªããã¯ããã¾ãã
document.head.append(script);
script.onerror = function() {
alert("Error loading " + this.src); // Error loading https://example.com/404.js
};
ããã§ã¯ã¨ã©ã¼ã®è©³ç´°ãåå¾ãããã¨ã¯ã§ããªããã¨ã«æ³¨æãã¦ãã ãããã¨ã©ã¼ã 404, 500, ã¾ãã¯ä»ã®ä½ãã ã£ãã®ãã¯åããã¾ãããåã«èªã¿è¾¼ã¿ã«å¤±æããã¨ãããã¨ã ãã§ãã
ä»ã®ãªã½ã¼ã¹
load 㨠error ã¤ãã³ãã¯ä»ã®ãªã½ã¼ã¹ã«å¯¾ãã¦ãæ©è½ãã¾ããããã«ã¯å¾®å¦ãªéããããã¾ãã
ä¾ãã°:
<img>,<link>(å¤é¨ã®ã¹ã¿ã¤ã«ã·ã¼ã)loadã¨error両æ¹ã®ã¤ãã³ãã¯æå¾ éãã«æ©è½ãã¾ãã<iframe>- iframe ã®èªã¿è¾¼ã¿ãå®äºããæã®
loadã¤ãã³ãã®ã¿ã§ãããã¼ããæåããå ´åã¨ã¨ã©ã¼ãçºçããå ´åã®ä¸¡æ¹ãããªã¬ã¼ãã¾ãã ããã¯æ´å²çãªçç±ã«ãããã®ã§ãã
ãµããª
ç»å <img>, å¤é¨ã¹ã¿ã¤ã«, ã¹ã¯ãªãããä»ã®ãªã½ã¼ã¹ã¯ããããã®èªã¿è¾¼ã¿ã追跡ããããã« load 㨠error ã¤ãã³ããæä¾ãã¦ãã¾ãã:
loadã¯ãã¼ããæåããã¨ãã«ããªã¬ããã¾ããerrorã¯ãã¼ãã«å¤±æããã¨ãã«ããªã¬ããã¾ãã
å¯ä¸ã®ä¾å¤ã¯ <iframe> ã§ã: æ´å²çãªçç±ã«ãããã©ããªå®äºã«ãããããã(ãã¨ããã¼ã¸ãè¦ã¤ãããªãã¦ã)ã常㫠load ãããªã¬ãã¾ãã
readystatechange ã¤ãã³ãããªã½ã¼ã¹ã«å¯¾ãã¦æ©è½ãã¾ãããæ®ã©ä½¿ããã¾ããããªããªã load/error ã¤ãã³ãã®æ¹ãã·ã³ãã«ãªããã§ãã
ã³ã¡ã³ã
<code>ã¿ã°ã使ã£ã¦ãã ãããè¤æ°è¡ã®å ´åã¯<pre>ãã10è¡ãè¶ ããå ´åã«ã¯ãµã³ãããã¯ã¹ã使ã£ã¦ãã ãã(plnkr, JSBin, codepenâ¦)ã