ЯзÑк JavaScript изнаÑалÑно бÑл Ñоздан Ð´Ð»Ñ Ð²ÐµÐ±-бÑаÑзеÑов. Ðо Ñ ÑÐµÑ Ð¿Ð¾Ñ Ð¾Ð½ знаÑиÑелÑно ÑволÑÑиониÑовал и пÑевÑаÑилÑÑ Ð² кÑоÑÑплаÑÑоÑменнÑй ÑзÑк пÑогÑаммиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ñ ÑеÑÐµÐ½Ð¸Ñ ÑиÑокого кÑÑга задаÑ.
Ð¡ÐµÐ³Ð¾Ð´Ð½Ñ JavaScript Ð¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð² бÑаÑзеÑе, на веб-ÑеÑвеÑе или в какой-Ñо дÑÑгой ÑÑеде, даже в коÑеваÑке. ÐÐ°Ð¶Ð´Ð°Ñ ÑÑеда пÑедоÑÑавлÑÐµÑ ÑÐ²Ð¾Ñ ÑÑнкÑионалÑноÑÑÑ, коÑоÑÑÑ ÑпеÑиÑикаÑÐ¸Ñ JavaScript назÑÐ²Ð°ÐµÑ Ð¾ÐºÑÑжением.
ÐкÑÑжение пÑедоÑÑавлÑÐµÑ Ñвои обÑекÑÑ Ð¸ дополниÑелÑнÑе ÑÑнкÑии, в дополнение базовÑм ÑзÑковÑм. ÐÑаÑзеÑÑ, напÑимеÑ, даÑÑ ÑÑедÑÑва Ð´Ð»Ñ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð²ÐµÐ±-ÑÑÑаниÑами. Node.js Ð´ÐµÐ»Ð°ÐµÑ Ð´Ð¾ÑÑÑпнÑми какие-Ñо ÑеÑвеÑнÑе возможноÑÑи и Ñак далее.
Ðа каÑÑинке ниже в обÑÐ¸Ñ ÑеÑÑÐ°Ñ Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ð¾, ÑÑо доÑÑÑпно Ð´Ð»Ñ JavaScript в бÑаÑзеÑном окÑÑжении:
Ðак Ð¼Ñ Ð²Ð¸Ð´Ð¸Ð¼, имееÑÑÑ ÐºÐ¾Ñневой обÑÐµÐºÑ window, коÑоÑÑй вÑÑÑÑÐ¿Ð°ÐµÑ Ð² 2 ÑолÑÑ
:
- Ðо-пеÑвÑÑ , ÑÑо глобалÑнÑй обÑÐµÐºÑ Ð´Ð»Ñ JavaScript-кода, об ÑÑом более подÑобно говоÑиÑÑÑ Ð² главе ÐлобалÑнÑй обÑекÑ.
- Ðо-вÑоÑÑÑ , он Ñакже пÑедÑÑавлÑÐµÑ Ñобой окно бÑаÑзеÑа и ÑаÑÐ¿Ð¾Ð»Ð°Ð³Ð°ÐµÑ Ð¼ÐµÑодами Ð´Ð»Ñ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð¼.
ÐапÑимеÑ, здеÑÑ Ð¼Ñ Ð¸ÑполÑзÑем window как глобалÑнÑй обÑекÑ:
function sayHi() {
alert("Hello");
}
// глобалÑнÑе ÑÑнкÑии доÑÑÑÐ¿Ð½Ñ ÐºÐ°Ðº меÑÐ¾Ð´Ñ Ð³Ð»Ð¾Ð±Ð°Ð»Ñного обÑекÑа:
window.sayHi();
РздеÑÑ Ð¼Ñ Ð¸ÑполÑзÑем window как обÑÐµÐºÑ Ð¾ÐºÐ½Ð° бÑаÑзеÑа, ÑÑÐ¾Ð±Ñ ÑзнаÑÑ ÐµÐ³Ð¾ вÑÑоÑÑ:
alert(window.innerHeight); // внÑÑÑеннÑÑ Ð²ÑÑоÑа окна бÑаÑзеÑа
СÑÑеÑÑвÑÐµÑ Ð³Ð¾Ñаздо болÑÑе ÑвойÑÑв и меÑодов Ð´Ð»Ñ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾ÐºÐ½Ð¾Ð¼ бÑаÑзеÑа. ÐÑ ÑаÑÑмоÑÑим Ð¸Ñ Ð¿Ð¾Ð·Ð´Ð½ÐµÐµ.
DOM (Document Object Model)
Document Object Model, ÑокÑаÑÑнно DOM â обÑекÑÐ½Ð°Ñ Ð¼Ð¾Ð´ÐµÐ»Ñ Ð´Ð¾ÐºÑменÑа, коÑоÑÐ°Ñ Ð¿ÑедÑÑавлÑÐµÑ Ð²Ñе ÑодеÑжимое ÑÑÑаниÑÑ Ð² виде обÑекÑов, коÑоÑÑе можно менÑÑÑ.
ÐбÑÐµÐºÑ document â оÑÐ½Ð¾Ð²Ð½Ð°Ñ Â«Ð²Ñ
Ð¾Ð´Ð½Ð°Ñ ÑоÑка». С его помоÑÑÑ Ð¼Ñ Ð¼Ð¾Ð¶ÐµÐ¼ ÑÑо-Ñо ÑоздаваÑÑ Ð¸Ð»Ð¸ менÑÑÑ Ð½Ð° ÑÑÑаниÑе.
ÐапÑимеÑ:
// заменим ÑÐ²ÐµÑ Ñона на кÑаÑнÑй,
document.body.style.background = "red";
// а ÑеÑез ÑекÑÐ½Ð´Ñ Ð²ÐµÑнÑм как бÑло
setTimeout(() => document.body.style.background = "", 1000);
ÐÑ Ð¸ÑполÑзовали в пÑимеÑе ÑолÑко document.body.style, но на Ñамом деле возможноÑÑи по ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ ÑÑÑаниÑей намного ÑиÑе. РазлиÑнÑе ÑвойÑÑва и меÑÐ¾Ð´Ñ Ð¾Ð¿Ð¸ÑÐ°Ð½Ñ Ð² ÑпеÑиÑикаÑии:
- DOM Living Standard на https://dom.spec.whatwg.org
СпеÑиÑикаÑÐ¸Ñ DOM опиÑÑÐ²Ð°ÐµÑ ÑÑÑÑкÑÑÑÑ Ð´Ð¾ÐºÑменÑа и пÑедоÑÑавлÑÐµÑ Ð¾Ð±ÑекÑÑ Ð´Ð»Ñ Ð¼Ð°Ð½Ð¸Ð¿ÑлÑÑий Ñо ÑÑÑаниÑей. СÑÑеÑÑвÑÑÑ Ð¸ дÑÑгие, оÑлиÑнÑе Ð¾Ñ Ð±ÑаÑзеÑов, инÑÑÑÑменÑÑ, иÑполÑзÑÑÑие DOM.
ÐапÑимеÑ, ÑеÑвеÑнÑе ÑкÑипÑÑ, коÑоÑÑе загÑÑжаÑÑ Ð¸ обÑабаÑÑваÑÑ HTML-ÑÑÑаниÑÑ, Ñакже могÑÑ Ð¸ÑполÑзоваÑÑ DOM. ÐÑи ÑÑом они могÑÑ Ð¿Ð¾Ð´Ð´ÐµÑживаÑÑ ÑпеÑиÑикаÑÐ¸Ñ Ð½Ðµ полноÑÑÑÑ.
ÐÑавила ÑÑилей CSS ÑÑÑÑкÑÑÑиÑÐ¾Ð²Ð°Ð½Ñ Ð¸Ð½Ð°Ñе Ñем HTML. ÐÐ»Ñ Ð½Ð¸Ñ ÐµÑÑÑ Ð¾ÑделÑÐ½Ð°Ñ ÑпеÑиÑикаÑÐ¸Ñ CSSOM, коÑоÑÐ°Ñ Ð¾Ð±ÑÑÑнÑеÑ, как ÑÑили Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¿ÑедÑÑавлÑÑÑÑÑ Ð² виде обÑекÑов, как Ð¸Ñ ÑиÑаÑÑ Ð¸ пиÑаÑÑ.
CSSOM иÑполÑзÑеÑÑÑ Ð²Ð¼ÐµÑÑе Ñ DOM пÑи изменении ÑÑилей докÑменÑа. Ð ÑеалÑноÑÑи CSSOM ÑÑебÑеÑÑÑ Ñедко, обÑÑно пÑавила CSS ÑÑаÑиÑнÑ. ÐÑ Ñедко добавлÑем/ÑдалÑем ÑÑили из JavaScript, но и ÑÑо возможно.
BOM (Browser Object Model)
ÐбÑекÑÐ½Ð°Ñ Ð¼Ð¾Ð´ÐµÐ»Ñ Ð±ÑаÑзеÑа (Browser Object Model, BOM) â ÑÑо дополниÑелÑнÑе обÑекÑÑ, пÑедоÑÑавлÑемÑе бÑаÑзеÑом (окÑÑжением), ÑÑÐ¾Ð±Ñ ÑабоÑаÑÑ Ñо вÑем, кÑоме докÑменÑа.
ÐапÑимеÑ:
- ÐбÑÐµÐºÑ navigator даÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ Ñамом бÑаÑзеÑе и опеÑаÑионной ÑиÑÑеме. СÑеди множеÑÑва его ÑвойÑÑв ÑамÑми извеÑÑнÑми ÑвлÑÑÑÑÑ:
navigator.userAgentâ инÑоÑмаÑÐ¸Ñ Ð¾ ÑекÑÑем бÑаÑзеÑе, иnavigator.platformâ инÑоÑмаÑÐ¸Ñ Ð¾ плаÑÑоÑме (Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð¼Ð¾ÑÑ Ð² понимании Ñого, в какой ÐС оÑкÑÑÑ Ð±ÑаÑÐ·ÐµÑ â Windows/Linux/Mac и Ñак далее). - ÐбÑÐµÐºÑ location позволÑÐµÑ Ð¿Ð¾Ð»ÑÑиÑÑ ÑекÑÑий URL и пеÑенапÑавиÑÑ Ð±ÑаÑÐ·ÐµÑ Ð¿Ð¾ Ð½Ð¾Ð²Ð¾Ð¼Ñ Ð°Ð´ÑеÑÑ.
ÐÐ¾Ñ ÐºÐ°Ðº Ð¼Ñ Ð¼Ð¾Ð¶ÐµÐ¼ иÑполÑзоваÑÑ Ð¾Ð±ÑÐµÐºÑ location:
alert(location.href); // показÑÐ²Ð°ÐµÑ ÑекÑÑий URL
if (confirm("ÐеÑейÑи на Wikipedia?")) {
location.href = "https://wikipedia.org"; // пеÑенапÑавлÑÐµÑ Ð±ÑаÑÐ·ÐµÑ Ð½Ð° дÑÑгой URL
}
ФÑнкÑии alert/confirm/prompt Ñоже ÑвлÑÑÑÑÑ ÑаÑÑÑÑ BOM: они не оÑноÑÑÑÑÑ Ð½ÐµÐ¿Ð¾ÑÑедÑÑвенно к ÑÑÑаниÑе, но пÑедÑÑавлÑÑÑ Ñобой меÑÐ¾Ð´Ñ Ð¾Ð±ÑекÑа окна бÑаÑзеÑа Ð´Ð»Ñ ÐºÐ¾Ð¼Ð¼ÑникаÑии Ñ Ð¿Ð¾Ð»ÑзоваÑелем.
BOM ÑвлÑеÑÑÑ ÑаÑÑÑÑ Ð¾Ð±Ñей ÑпеÑиÑикаÑии HTML.
Ðа, Ð²Ñ Ð²ÑÑ Ð²ÐµÑно ÑÑлÑÑали. СпеÑиÑикаÑÐ¸Ñ HTML по адÑеÑÑ https://html.spec.whatwg.org не ÑолÑко пÑо «ÑзÑк 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/ru/ Ñоже оÑÐµÐ½Ñ Ñ Ð¾ÑоÑий ÑеÑÑÑÑ, Ñ Ð¾ÑÑ Ð½Ð¸ÑÑо не ÑÑавниÑÑÑ Ñ ÑÑением ÑпеÑиÑикаÑии: она ÑÐ»Ð¾Ð¶Ð½Ð°Ñ Ð¸ обÑÑмнаÑ, но ÑÐ´ÐµÐ»Ð°ÐµÑ Ð²Ð°Ñи Ð·Ð½Ð°Ð½Ð¸Ñ Ð¼Ð°ÐºÑималÑно полнÑми.
ÐÐ»Ñ Ð¿Ð¾Ð¸Ñка Ñего-либо обÑÑно Ñдобно иÑполÑзоваÑÑ Ð¸Ð½ÑеÑнеÑ-поиÑк Ñо Ñловами «WHATWG [ÑеÑмин]» или «MDN [ÑеÑмин]», напÑÐ¸Ð¼ÐµÑ https://google.com?q=whatwg+localstorage, https://google.com?q=mdn+localstorage.
Ð ÑепеÑÑ Ð´Ð°Ð²Ð°Ð¹Ñе пеÑейдÑм к изÑÑÐµÐ½Ð¸Ñ DOM, Ñак как ÑÑÑаниÑа â ÑÑо оÑнова вÑего.
ÐомменÑаÑии
<code>, Ð´Ð»Ñ Ð½ÐµÑколÑÐºÐ¸Ñ ÑÑÑок кода — Ñег<pre>, еÑли болÑÑе 10 ÑÑÑок — ÑÑÑÐ»ÐºÑ Ð½Ð° пеÑоÑниÑÑ (plnkr, JSBin, codepenâ¦)