- Notifications
You must be signed in to change notification settings - Fork179
Browser environment, specs#243
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Merged
tarasyyyk merged 2 commits intojavascript-tutorial:masterfromMykolaSopiha:browser-environmentDec 27, 2021
Uh oh!
There was an error while loading.Please reload this page.
Merged
Changes fromall commits
Commits
Show all changes
2 commits Select commitHold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Uh oh!
There was an error while loading.Please reload this page.
Jump to
Jump to file
Failed to load files.
Loading
Uh oh!
There was an error while loading.Please reload this page.
Diff view
Diff view
There are no files selected for viewing
102 changes: 51 additions & 51 deletions2-ui/1-document/01-browser-environment/article.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,113 +1,113 @@ | ||
#Браузерне середовище, специфікації | ||
Мова програмуванняJavaScriptбула створена для веббраузерів. З того часу вона розвинулася і стала мовою з багатьма варіантами використанням та платформами. | ||
Платформою може бути браузер, або вебсервер або інший *хост*,навіть "розумна" кавоварка, якщо вона може запустити JavaScript.Кожна з них забезпечує специфічну для платформи функціональність. Специфікація JavaScriptназиває це *середовищем*. | ||
Середовище забезпечує власні об’єкти та додаткові функції до ядра мови. Веббраузери дають засоби для керування вебсторінками. Node.jsзабезпечує функції сервера і так далі. | ||
Ось погляд в загальних рисах на те, що ми маємо, коли JavaScript працює в веббраузері: | ||
 | ||
Є "корінний" об’єкт, що називається`window`.Він має дві ролі: | ||
1.По-перше, це глобальний об’єкт для кодуJavaScript, як описано в розділі <info:global-object>. | ||
2.По-друге, він являє собою "вікно браузера" та надає способи для керування ним. | ||
Наприклад, тут ми використовуємо його як глобальний об’єкт: | ||
```js run | ||
function sayHi() { | ||
alert("Здрастуйте"); | ||
} | ||
//глобальні функції є методами глобального об’єкта: | ||
window.sayHi(); | ||
``` | ||
А тут ми використовуємо його як вікно браузера, щоб побачити висоту вікна: | ||
```js run | ||
alert(window.innerHeight); //внутрішня висота вікна | ||
``` | ||
Існує набагато більше методів та властивостей вікна, ми їх розглянемо пізніше. | ||
## DOM (Document Object Model) | ||
Document Object Model,або скороченоDOM-- представляє весь контент сторінки як об’єкти, які можуть бути змінені. | ||
Об’єкт `document`-- це головна "точка входу" до сторінки. Ми можемо змінити або створити що-небудь на сторінці, використовуючи цей об’єкт. | ||
Наприклад | ||
```js run | ||
//змінити колір фону на червоний | ||
document.body.style.background = "red"; | ||
//повернути його назад після 1секунди | ||
setTimeout(() => document.body.style.background = "", 1000); | ||
``` | ||
Тут ми використовували `document.body.style`,але там набагато, набагато більше властивостей. Властивості та методи описані у специфікації: [DOM Living Standard](https://dom.spec.whatwg.org). | ||
```smart header="DOM-- не лише для браузерів" | ||
Специфікація DOMописує структуру документа та надає об’єкти, щоб керувати ним. Є також інші інструменти окрім браузерів, які також використовуютьDOM. | ||
Наприклад, скрипти сервера, які завантажують HTML-сторінки та обробляють їх також можуть використовуватиDOM.Хоча, вони можуть підтримувати лише частину специфікації. | ||
``` | ||
```smart header="CSSOMдля стилю" | ||
Також є окрема специфікація, [CSS Object Model (CSSOM)](https://www.w3.org/TR/cssom-1/)для правилCSSта таблиць стилів, що пояснює, як стилі повинні бути представлені у вигляді об’єктів, як читати та писати їх. | ||
CSSOMвикористовується разом зDOM, коли ми змінюємо правила стилів для документа. Хоча на практиці, ми рідко використовуємо CSSOM, тому що рідко змінюємоCSS-правила черезJavaScript (зазвичай ми просто додаємо/видаляємо CSS-класи, не змінюючи їх CSS-правила),але це також можливо. | ||
``` | ||
## BOM (Browser Object Model) | ||
Модель об’єкта браузера(BOM)являє собою додаткові об’єкти, надані браузером (хост-середовищем) для роботи з усім, крім документа. | ||
Наприклад: | ||
-Об’єкт [navigator](mdn:api/Window/navigator)забезпечує інформацію про браузер та операційну систему. Існує багато його властивостей, але два найбільш широко відомих: `navigator.userAgent` --інформація про поточний браузер, та `navigator.platform` --про платформу (може допомогти визначити на якій платформі відкрито браузер --Windows/Linux/Macтощо). | ||
-Об’єкт [location](mdn:api/Window/location)дозволяє нам прочитати поточнуURL-адресу і може перенаправити веббраузер на нову адресу. | ||
Ось як ми можемо використовувати об’єкт `location`: | ||
```js run | ||
alert(location.href); //показує поточний URL-адрес | ||
if (confirm("Перейти на сайт Wikipedia?")) { | ||
location.href = "https://wikipedia.org"; //перенаправляє браузер на іншуURL-адресу | ||
} | ||
``` | ||
Функції `alert/confirm/prompt`також є частиноюBOM:вони безпосередньо не пов’язані з документом, але являють собою чисті методи взаємодії з користувачем. | ||
```smart header="Специфікації" | ||
BOM-- це частина загальної[HTML-специфікації](https://html.spec.whatwg.org). | ||
Так, ви правильно почули. Специфікація 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/en-US/> також є хорошим ресурсом, але відповідна специфікація може бути кращим ресурсом: вона складніша і її довше читати, але вона зробить ваші знання фундаментальними та повними. | ||
Щоб щось знайти в Інтернеті, часто зручно використовувати пошук в форматі "WHATWG [запит]"або "MDN [запит]",наприклад, <https://google.com?q=whatwg+localstorage>, <https://google.com?q=mdn+localstorage>. | ||
Тепер перейдімо до вивченняDOM,тому що документ відіграє центральну роль в інтерфейсі користувача. |
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.