å½åãJavaScriptè¨èªã¯ web ãã©ã¦ã¶ã®ããã«ä½ããã¾ããããã以éãè¨èªã¯é²åããå¤ãã®ç¨éããã©ãããã©ã¼ã ããã¤è¨èªã«ãªãã¾ããã
ãã©ãããã©ã¼ã ã¯ããã©ã¦ã¶ãWebãµã¼ãããããã¯å¥ã® ãã¹ããJavaScript ãå®è¡å¯è½ã§ããã° âã¹ãã¼ããªâ ã³ã¼ãã¼ãã·ã³ããããã¾ããããããã¯ãã©ãããã©ã¼ã åºæã®æ©è½ãæä¾ãã¾ããJavaScript ã¹ããã¯ã§ã¯ããã ãã¹ãç°å¢ ã¨å¼ãã§ãã¾ãã
ãã¹ãç°å¢ã¯è¨èªã®ã³ã¢ã«å ãã¦ãç¬èªã®ãªãã¸ã§ã¯ããæ©è½ãæä¾ãã¾ããWebãã©ã¦ã¶ã§ããã° Webãã¼ã¸ãå¶å¾¡ããææ®µããNode.js ã§ããã°ãµã¼ããµã¤ãã®æ©è½ãªã©ã§ãã
ããã¯ãJavaScript ãWebãã©ã¦ã¶ã§å®è¡ããã¦ããã¨ãã®é³¥ç°å³ã§ã:
window ã¨å¼ã°ãã âã«ã¼ãâ ãªãã¸ã§ã¯ããããã¾ããããã¯2ã¤ã®å½¹å²ãæã¡ã¾ãã:
- 1ã¤ç®ã¯ãããã¯JavaScriptã³ã¼ãã®ã°ãã¼ãã«ãªãã¸ã§ã¯ãã§ãããã°ãã¼ãã«ãªãã¸ã§ã¯ã ã®ç« ã§èª¬æããã¨ããã§ãã
- 2ã¤ç®ã¯ããã㯠âãã©ã¦ã¶ã¦ã£ã³ãã¦â ã表ããã¦ã£ã³ãã¦ãå¶å¾¡ããããã®ã¡ã½ãããæä¾ãã¾ãã
ä¾ãã°ãããã§ã¯ã°ãã¼ãã«ãªãã¸ã§ã¯ãã¨ãã¦ä½¿ãã¾ã:
function sayHi() {
alert("Hello");
}
// ã°ãã¼ãã«é¢æ°ã¯ window ã®ããããã£ã¨ãã¦ã¢ã¯ã»ã¹å¯è½
window.sayHi();
ã¾ããããã§ã¯ã¦ã£ã³ãã¦ã®é«ããè¦ãããã«ãã©ã¦ã¶ã¦ã£ã³ãã¦ã¨ãã¦ä½¿ãã¾ã:
alert(window.innerHeight); // å
é¨ã® window ã®é«ã
windowåºæã®ã¡ã½ãããããããã£ã¯ããããããã¾ããå¾ã»ã©ããããè¦ã¦ããã¾ãã
DOMï¼ããã¥ã¡ã³ããªãã¸ã§ã¯ãã¢ãã«ï¼
ããã¥ã¡ã³ããªãã¸ã§ã¯ãã¢ãã«ãç¥ã㦠DOM ã¯ããã¼ã¸å ¨ä½ã®ã³ã³ãã³ãã夿´å¯è½ãªãªãã¸ã§ã¯ãã¨ãã¦è¡¨ç¾ãã¾ãã
document ãªãã¸ã§ã¯ãã¯ãã¼ã¸ã®ã¡ã¤ã³ã® âã¨ã³ããªã¼ãã¤ã³ãâ ã§ããããã使ã£ã¦ããã¼ã¸ä¸ã®ãã®ã夿´ããã使ãããã¨ãã§ãã¾ãã
ä¾:
// èæ¯è²ã赤ã«å¤ãã
document.body.style.background = 'red';
// 1ç§å¾ã«æ»ã
setTimeout(() => document.body.style.background = '', 1000);
ããã§ã¯ document.body.style ã使ãã¾ããããã¾ã ã¾ã ããã¾ããããããã£ã¨ã¡ã½ããã¯ã¹ãã㯠: DOM Living Standard ã§èª¬æããã¦ãã¾ãã
DOM ã¹ããã¯ã¯ããã¥ã¡ã³ãã®æ§é ã説æããæä½ããããã®ãªãã¸ã§ã¯ããæä¾ãã¾ããDOM ã使ãéãã©ã¦ã¶ã®ãã®ãããã¾ãã
ä¾ãã°ãHTMLãã¼ã¸ããã¦ã³ãã¼ãããããå¦çãããµã¼ããµã¤ãã®ã¹ã¯ãªããã§ããDOM ã¹ããã¯ã®ä¸é¨ã®ã¿ããµãã¼ããã¦ããããããã¾ããã
CSS ã«ã¼ã«ãã¹ã¿ã¤ã«ã·ã¼ãã®ããã®å¥ã®ã¹ããã¯CSS ãªãã¸ã§ã¯ãã¢ãã«ï¼CSSOMï¼ãããã¾ãã ããã¯ãªãã¸ã§ã¯ãã¨ãã¦ã©ã®ããã«è¡¨ç¾ãããã©ã®ããã«ããããèªã¿æ¸ãããããè¨è¿°ããã¦ãã¾ãã
CSSOM 㯠document ã®ã¹ã¿ã¤ã«ã«ã¼ã«ã夿´ããã¨ããDOM ã¨ä¸ç·ã«ä½¿ããã¾ããã§ããå®éã«ã¯ãJavaScript ããCSSã«ã¼ã«ã夿´ãããã¨ã¯ãã£ãã«ãªããããCSSOM ã¯ã»ã¨ãã©ä½¿ããã¾ããï¼é常㯠CSSã«ã¼ã«ã®å¤æ´ã§ã¯ãªããCSSã¯ã©ã¹ã®è¿½å åé¤ããã¾ãï¼ãããããå¯è½ã§ãã
BOM (HTML仿§ã®ä¸é¨)
ãã©ã¦ã¶ãªãã¸ã§ã¯ãã¢ãã«(BOM)㯠document 以å¤ã®ãã¹ã¦ã¨é£æºãããã©ã¦ã¶(ãã¹ãç°å¢)ã«ããæä¾ããã追å ãªãã¸ã§ã¯ãã§ãã
ä¾ãã°:
- navigator ãªãã¸ã§ã¯ãã¯ãã©ã¦ã¶ã¨ãªãã¬ã¼ãã£ã³ã°ã·ã¹ãã ã®ããã¯ã°ã©ã¦ã³ãã®æ
å ±ãæä¾ãã¾ããå¤ãã®ããããã£ãæã£ã¦ãã¾ãããæãåºãç¥ããã¦ãã2ã¤ã®ããããã£ã¯ããã§ã:
navigator.userAgentâ ç¾å¨ã®ãã©ã¦ã¶ã«ã¤ãã¦,navigator.platformâ ãã©ãããã©ã¼ã ã«ã¤ãã¦(Windows/Linux/Macãªã©ãåãã) - location ãªãã¸ã§ã¯ãã¯ç¾å¨ã®URLãèªã¿ããã©ã¦ã¶ãæ°ããURLã¸ãªãã¤ã¬ã¯ãã§ãã¾ãã
ããã¯ãlocation ãªãã¸ã§ã¯ããä½¿ãæ¹æ³ã§ã:
alert(location.href); // ç¾å¨ã®URLã表示
if (confirm("Go to wikipedia?")) {
location.href = 'https://wikipedia.org'; // å¥ã®URLã¸ãªãã¤ã¬ã¯ã
}
颿° alert/confirm/prompt ãã¾ã BOM ã®ä¸é¨ã§ã: ãããã¯ç´æ¥ã¯ document ã¨é¢ä¿ã¯ãã¾ããããã¦ã¼ã¶ã¨ã³ãã¥ãã±ã¼ã·ã§ã³ãã¨ãç´ç²ãªãã©ã¦ã¶ã¡ã½ããã表ãã¾ãã
BOM ã¯ä¸è¬ç㪠HTML ã¹ããã¯ã®ä¸é¨ã§ãã
https://html.spec.whatwg.org ã®HTMLã¹ããã¯ã¯ âHTMLè¨èªâ (ã¿ã°ã屿§) ã«ã¤ãã¦ã ãã§ãªããå¤ãã®ãªãã¸ã§ã¯ããã¡ã½ããããã©ã¦ã¶åºæã®DOMæ¡å¼µãã«ãã¼ãã¾ãããã㯠âåºç¾©ã®HTMLâ ã§ããã¾ããããã¤ãã®ãã¼ã㯠https://spec.whatwg.org ã«ãªã¹ãããã¦ãã追å ã®ã¹ããã¯ãããã¾ãã
ãµããª
æ¨æºã«é¢ãã¦èª¬æãã¾ãã:
- DOM ã¹ããã¯
- document æ§é ãæä½ãããã³ã¤ãã³ãã«ã¤ãã¦èª¬æãã¾ããhttps://dom.spec.whatwg.org ãè¦ã¦ãã ããã
- CSSOM ã¹ããã¯
- ã¹ã¿ã¤ã«ã·ã¼ãã¨ã¹ã¿ã¤ã«ã«ã¼ã«ããããã®æä½ã document ã¸ã®ãã¤ã³ãã£ã³ã°ã«ã¤ãã¦èª¬æãã¾ããhttps://www.w3.org/TR/cssom-1/ ãè¦ã¦ãã ããã
- HTML ã¹ããã¯
- HTMLè¨èª(ã¿ã°ãªã©) ã BOM(ãã©ã¦ã¶ãªãã¸ã§ã¯ãã¢ãã«) ã説æãã¾ã â æ§ã
ãªãã©ã¦ã¶é¢æ°ãããã¾ã:
setTimeout,alert,locationãªã©ãhttps://html.spec.whatwg.org ãè¦ã¦ãã ããããã㯠DOM 仿§ã¨å¤ãã®è¿½å ããããã£ãã¡ã½ããã使ã£ããã®æ¡å¼µã§ãã
å ãã¦ãããã¤ãã®ã¯ã©ã¹ã¯ https://spec.whatwg.org/ ã§åå¥ã«èª¬æãããã¾ãã
ãããã®ãªã³ã¯ãã¡ã¢ãã¦ããã¦ãã ãããå¦ã¶ãã¨ãããããããã®ã§ããã¹ã¦ãã«ãã¼ãã¦è¦ããã®ã¯ä¸å¯è½ã§ãã
ããããã£ã¾ãã¯ã¡ã½ããã«ã¤ãã¦èªã¿ãããªã£ãã¨ããhttps://developer.mozilla.org/en-US/search ã«ãã Mozilla ã®ããã¥ã¢ã«ãåªãããªã½ã¼ã¹ã§ããã対å¿ããã¹ããã¯ãèªãæ¹ãããããããã¾ãã: è¤éã§é·ãããããã¾ããããåºæ¬ã®ç¥èã¯å¥å ¨ã§å®å ¨ãªãã®ã«ãªãã¾ãã
ä½ããè¦ã¤ããã«ã¯ãã¤ã³ã¿ã¼ãããæ¤ç´¢ã§ âWHATWG [term]â ããã㯠âMDN [term]â ã使ç¨ããã¨ä¾¿å©ãªãã¨ãããããã¾ããä¾: https://google.com?q=whatwg+localstorage, https://google.com?q=mdn+localstorageã
次ã«ãããã¥ã¡ã³ãã UI ã®ä¸å¿çãªå½¹å²ãæããã®ã§ãDOM ã®å¦ç¿ãå§ãã¦ããã¾ãã
ã³ã¡ã³ã
<code>ã¿ã°ã使ã£ã¦ãã ãããè¤æ°è¡ã®å ´åã¯<pre>ãã10è¡ãè¶ ããå ´åã«ã¯ãµã³ãããã¯ã¹ã使ã£ã¦ãã ãã(plnkr, JSBin, codepenâ¦)ã