JavaScript è¯è¨æåæ¯ä¸º Web æµè§å¨å建çãæ¤åï¼å®å·²ç»æ¼åæäºä¸ç§å ·æå¤ç§ç¨éåå¹³å°çè¯è¨ã
å¹³å°å¯ä»¥æ¯ä¸ä¸ªæµè§å¨ï¼ä¸ä¸ª Web æå¡å¨ï¼æå ¶ä» 主æºï¼hostï¼ï¼çè³å¯ä»¥æ¯ä¸ä¸ªâæºè½âå塿ºï¼å¦æå®è½è¿è¡ JavaScript çè¯ãå®ä»¬æ¯ä¸ªé½æä¾äºç¹å®äºå¹³å°çåè½ãJavaScript è§èå°å ¶ç§°ä¸º 主æºç¯å¢ã
主æºç¯å¢æä¾äºèªå·±ç对象åè¯è¨æ ¸å¿ä»¥å¤ç彿°ãWeb æµè§å¨æä¾äºä¸ç§æ§å¶ç½é¡µçæ¹æ³ãNode.JS æä¾äºæå¡å¨ç«¯åè½ï¼ççã
ä¸é¢æ¯ JavaScript 卿µè§å¨ä¸è¿è¡æ¶çé¸ç°ç¤ºæå¾ï¼
æä¸ä¸ªå«å window çâæ ¹â对象ãå®æä¸¤ä¸ªè§è²ï¼
- é¦å ï¼å®æ¯ JavaScript 代ç çå ¨å±å¯¹è±¡ï¼å¦ å ¨å±å¯¹è±¡ ä¸ç« æè¿°ã
- å ¶æ¬¡ï¼å®ä»£è¡¨âæµè§å¨çªå£âï¼å¹¶æä¾äºæ§å¶å®çæ¹æ³ã
ä¾å¦ï¼æä»¬å¯ä»¥å°å®ç¨ä½å ¨å±å¯¹è±¡ï¼
function sayHi() {
alert("Hello");
}
// å
¨å±å½æ°æ¯å
¨å±å¯¹è±¡çæ¹æ³ï¼
window.sayHi();
并䏿们å¯ä»¥å°å®ç¨ä½æµè§å¨çªå£ï¼ä»¥æ¥ççªå£é«åº¦ï¼
alert(window.innerHeight); // å
é¨çªå£é«åº¦
è¿ææ´å¤çªå£ç¹å®çæ¹æ³å屿§ï¼æä»¬ç¨åä¼ä»ç»ã
ææ¡£å¯¹è±¡æ¨¡åï¼DOMï¼
ææ¡£å¯¹è±¡æ¨¡åï¼Document Object Modelï¼ï¼ç®ç§° 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 Object Model (CSSOM)ï¼è¿ä»½è§èè§£éäºå¦ä½å° CSS 表示为对象ï¼ä»¥åå¦ä½è¯»åè¿äºå¯¹è±¡ã
å½æä»¬ä¿®æ¹ææ¡£çæ ·å¼è§åæ¶ï¼CSSOM ä¸ DOM æ¯ä¸èµ·ä½¿ç¨çãä½å®é ä¸ï¼å¾å°éè¦ CSSOMï¼å 为æä»¬å¾å°éè¦ä» JavaScript ä¸ä¿®æ¹ CSS è§åï¼æä»¬éå¸¸åªæ¯æ·»å /ç§»é¤ä¸äº CSS ç±»ï¼è䏿¯ç´æ¥ä¿®æ¹å ¶ä¸ç CSS è§åï¼ï¼ä½è¿ä¹æ¯å¯è¡çã
æµè§å¨å¯¹è±¡æ¨¡åï¼BOMï¼
æµè§å¨å¯¹è±¡æ¨¡åï¼Browser Object Modelï¼ï¼ç®ç§° BOMï¼è¡¨ç¤ºç±æµè§å¨ï¼ä¸»æºç¯å¢ï¼æä¾çç¨äºå¤çææ¡£ï¼documentï¼ä¹å¤çææå 容çå ¶ä»å¯¹è±¡ã
ä¾å¦ï¼
- navigator 对象æä¾äºæå
³æµè§å¨åæä½ç³»ç»çèæ¯ä¿¡æ¯ãnavigator æè®¸å¤å±æ§ï¼ä½æ¯æå¹¿ä¸ºäººç¥çä¸¤ä¸ªå±æ§æ¯ï¼
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 è§è
- æè¿°ææ¡£çç»æãæä½åäºä»¶ï¼è¯¦è§ https://dom.spec.whatwg.orgã
- CSSOM è§è
- æè¿°æ ·å¼è¡¨åæ ·å¼è§åï¼å¯¹å®ä»¬è¿è¡çæä½ï¼ä»¥åå®ä»¬ä¸ææ¡£çç»å®ï¼è¯¦è§ https://www.w3.org/TR/cssom-1/ã
- HTML è§è
- æè¿° HTML è¯è¨ï¼ä¾å¦æ ç¾ï¼ä»¥å BOMï¼æµè§å¨å¯¹è±¡æ¨¡åï¼â åç§æµè§å¨å½æ°ï¼
setTimeoutï¼alertï¼locationçï¼è¯¦è§ https://html.spec.whatwg.orgãå®éç¨äº DOM è§èï¼å¹¶ä½¿ç¨äºè®¸å¤å ¶ä»å±æ§åæ¹æ³å¯¹å ¶è¿è¡äºæ©å±ã
æ¤å¤ï¼æäºç±»è¢«åå«æè¿°å¨ https://spec.whatwg.org/ã
请注æè¿äºé¾æ¥ï¼å 为è¦å¦çä¸è¥¿å¤ªå¤äºï¼æä»¥ä¸å¯è½æ¶µçå¹¶è®°ä½ææå 容ã
å½ä½ æ³è¦äºè§£æä¸ªå±æ§ææ¹æ³æ¶ï¼Mozilla æå https://developer.mozilla.org/en-US/ æ¯ä¸ä¸ªå¾å¥½çèµæºï¼ä½å¯¹åºçè§èå¯è½ä¼æ´å¥½ï¼å®æ´å¤æï¼ä¸é 读起æ¥éè¦æ´é¿çæ¶é´ï¼ä½æ¯ä¼ä½¿ä½ çåºæ¬ç¥è¯æ´å å ¨é¢ï¼æ´å 宿´ã
è¦æ¥æ¾æäºå 容æ¶ï¼ä½ é常å¯ä»¥ä½¿ç¨äºèç½æç´¢ âWHATWG [term]â æ âMDN [term]âï¼ä¾å¦ https://google.com?q=whatwg+localstorageï¼https://google.com?q=mdn+localstorageã
ç°å¨ï¼æä»¬å¼å§å¦ä¹ DOMï¼å ä¸ºææ¡£å¨ UI 䏿®æ¼çæ ¸å¿è§è²ã
è¯è®º
<code>æ ç¾æå ¥åªæå 个è¯ç代ç ï¼æå ¥å¤è¡ä»£ç å¯ä»¥ä½¿ç¨<pre>æ ç¾ï¼å¯¹äºè¶ è¿ 10 è¡ç代ç ï¼å»ºè®®ä½ ä½¿ç¨æ²ç®±ï¼plnkrï¼JSBinï¼codepenâ¦ï¼