From 7586547b4ee219ca2d0c6b462408a243052d24f6 Mon Sep 17 00:00:00 2001 From: Alexey Pyltsyn Date: Sun, 21 Mar 2021 10:41:00 +0300 Subject: Deeper yofication of Russian translation (#251) --- .../web/javascript/guide/introduction/index.html | 2 +- .../global_objects/proxy/proxy/index.html | 2 +- files/ru/games/index.html | 6 +-- files/ru/games/introduction/index.html | 2 +- .../index.html | 2 +- .../techniques/controls_gamepad_api/index.html | 4 +- .../finishing_up/index.html | 2 +- files/ru/glossary/character_encoding/index.html | 2 +- files/ru/glossary/php/index.html | 2 +- files/ru/glossary/primitive/index.html | 4 +- files/ru/glossary/semantics/index.html | 2 +- .../how_does_the_internet_work/index.html | 2 +- .../set_up_a_local_testing_server/index.html | 2 +- .../css/building_blocks/debugging_css/index.html | 4 +- .../images_media_form_elements/index.html | 4 +- .../css/building_blocks/styling_tables/index.html | 2 +- .../building_blocks/values_and_units/index.html | 2 +- files/ru/learn/css/css_layout/floats/index.html | 4 +- files/ru/learn/css/css_layout/grids/index.html | 6 +-- .../learn/css/css_layout/introduction/index.html | 6 +-- .../ru/learn/css/css_layout/positioning/index.html | 2 +- .../practical_positioning_examples/index.html | 2 +- .../css/css_layout/responsive_design/index.html | 2 +- files/ru/learn/css/first_steps/index.html | 2 +- .../css/styling_text/styling_links/index.html | 6 +-- .../css/styling_text/styling_lists/index.html | 6 +-- .../ru/learn/css/styling_text/web_fonts/index.html | 2 +- files/ru/learn/forms/form_validation/index.html | 2 +- .../how_to_build_custom_form_controls/index.html | 4 +- .../sending_and_retrieving_form_data/index.html | 2 +- .../sending_forms_through_javascript/index.html | 2 +- .../css_basics/index.html | 2 +- .../dealing_with_files/index.html | 2 +- .../html_basics/index.html | 2 +- .../javascript_basics/index.html | 2 +- .../advanced_text_formatting/index.html | 2 +- .../html_text_fundamentals/index.html | 2 +- .../the_head_metadata_in_html/index.html | 2 +- .../adding_vector_graphics_to_the_web/index.html | 2 +- .../learn/html/multimedia_and_embedding/index.html | 2 +- .../other_embedding_technologies/index.html | 4 +- .../responsive_images/index.html | 2 +- files/ru/learn/html/tables/advanced/index.html | 4 +- files/ru/learn/html/tables/basics/index.html | 6 +-- .../javascript/asynchronous/async_await/index.html | 2 +- .../asynchronous/timeouts_and_intervals/index.html | 4 +- .../javascript/building_blocks/events/index.html | 4 +- .../client-side_web_apis/fetching_data/index.html | 2 +- .../first_steps/a_first_splash/index.html | 2 +- .../learn/javascript/first_steps/math/index.html | 4 +- .../javascript/first_steps/variables/index.html | 6 +-- .../first_steps/what_is_javascript/index.html | 4 +- .../objects/object-oriented_js/index.html | 2 +- .../learn/server-side/django/admin_site/index.html | 4 +- .../server-side/django/authentication/index.html | 6 +-- .../learn/server-side/django/deployment/index.html | 4 +- .../django/development_environment/index.html | 4 +- files/ru/learn/server-side/django/forms/index.html | 4 +- .../server-side/django/generic_views/index.html | 2 +- .../learn/server-side/django/home_page/index.html | 2 +- .../ru/learn/server-side/django/models/index.html | 2 +- .../learn/server-side/django/sessions/index.html | 4 +- .../ru/learn/server-side/django/testing/index.html | 2 +- .../forms/delete_author_form/index.html | 4 +- .../ru/learn/server-side/express_nodejs/index.html | 2 +- .../server-side/express_nodejs/routes/index.html | 4 +- .../express_nodejs/skeleton_website/index.html | 2 +- files/ru/learn/server-side/index.html | 4 +- .../cross_browser_testing/introduction/index.html | 2 +- .../chrome_incompatibilities/index.html | 2 +- .../user_interface/browser_action/index.html | 2 +- .../your_second_webextension/index.html | 2 +- files/ru/mozilla/firefox/index.html | 2 +- .../orphaned/web/html/element/element/index.html | 2 +- .../information_security_basics/index.html | 2 +- .../index.html" | 2 +- .../index.html" | 2 +- .../how_to/edit_css_shapes/index.html | 2 +- files/ru/web/accessibility/aria/index.html | 2 +- files/ru/web/api/analysernode/index.html | 2 +- files/ru/web/api/attr/index.html | 14 +++--- files/ru/web/api/body/arraybuffer/index.html | 2 +- .../api/canvas_api/tutorial/basic_usage/index.html | 2 +- .../pixel_manipulation_with_canvas/index.html | 2 +- .../canvas_api/tutorial/using_images/index.html | 2 +- .../canvasrenderingcontext2d/drawimage/index.html | 8 ++-- .../api/canvasrenderingcontext2d/fill/index.html | 2 +- .../ru/web/api/canvasrenderingcontext2d/index.html | 4 +- .../canvasrenderingcontext2d/linecap/index.html | 2 +- files/ru/web/api/datatransfer/index.html | 2 +- files/ru/web/api/document/write/index.html | 2 +- .../document_object_model/introduction/index.html | 2 +- files/ru/web/api/element/index.html | 2 +- files/ru/web/api/element/setattribute/index.html | 2 +- files/ru/web/api/event/preventdefault/index.html | 2 +- .../api/eventtarget/addeventlistener/index.html | 2 +- files/ru/web/api/fetch_api/using_fetch/index.html | 2 +- .../drag_operations/index.html | 2 +- files/ru/web/api/htmlaudioelement/index.html | 2 +- .../api/htmlcanvaselement/getcontext/index.html | 2 +- files/ru/web/api/htmlmediaelement/index.html | 2 +- .../web/api/intersection_observer_api/index.html | 2 +- .../api/keyboardevent/key/key_values/index.html | 6 +-- files/ru/web/api/mutationobserver/index.html | 2 +- files/ru/web/api/navigator/battery/index.html | 2 +- files/ru/web/api/node/index.html | 2 +- files/ru/web/api/node/insertbefore/index.html | 2 +- files/ru/web/api/node/issupported/index.html | 2 +- .../ru/web/api/node/lookupnamespaceuri/index.html | 2 +- files/ru/web/api/node/namespaceuri/index.html | 2 +- files/ru/web/api/node/replacechild/index.html | 4 +- files/ru/web/api/performance/index.html | 2 +- files/ru/web/api/pointer_lock_api/index.html | 2 +- files/ru/web/api/push_api/index.html | 2 +- files/ru/web/api/rtcpeerconnection/index.html | 2 +- .../using_service_workers/index.html | 6 +-- files/ru/web/api/streams_api/index.html | 2 +- files/ru/web/api/touch_events/index.html | 2 +- files/ru/web/api/vrpose/position/index.html | 2 +- .../visualizations_with_web_audio_api/index.html | 2 +- .../using_the_web_speech_api/index.html | 2 +- .../api/webrtc_api/using_data_channels/index.html | 2 +- files/ru/web/api/webvr_api/index.html | 2 +- .../api/webvr_api/using_the_webvr_api/index.html | 2 +- files/ru/web/api/window/alert/index.html | 2 +- .../window/gamepaddisconnected_event/index.html | 2 +- files/ru/web/api/window/performance/index.html | 2 +- files/ru/web/api/window/postmessage/index.html | 2 +- .../api/windoweventhandlers/onpopstate/index.html | 2 +- files/ru/web/api/xmlhttprequest/send/index.html | 2 +- .../xmlhttprequest/using_xmlhttprequest/index.html | 2 +- .../css/@counter-style/additive-symbols/index.html | 4 +- .../web/css/_doublecolon_first-letter/index.html | 2 +- .../ru/web/css/_doublecolon_first-line/index.html | 2 +- files/ru/web/css/color_value/index.html | 2 +- files/ru/web/css/column-rule-color/index.html | 2 +- files/ru/web/css/column-rule-style/index.html | 2 +- files/ru/web/css/column-rule/index.html | 2 +- files/ru/web/css/css_animations/tips/index.html | 2 +- .../backwards_compatibility_of_flexbox/index.html | 2 +- .../layout_using_named_grid_lines/index.html | 2 +- .../line-based_placement_with_css_grid/index.html | 2 +- files/ru/web/css/font-variant-ligatures/index.html | 2 +- files/ru/web/css/hyphens/index.html | 2 +- files/ru/web/css/min-height/index.html | 2 +- files/ru/web/css/overflow-block/index.html | 2 +- files/ru/web/css/radial-gradient()/index.html | 2 +- .../web/css/repeating-linear-gradient()/index.html | 2 +- files/ru/web/events/index.html | 10 ++--- files/ru/web/guide/ajax/getting_started/index.html | 4 +- .../web/guide/html/content_categories/index.html | 2 +- files/ru/web/html/element/body/index.html | 2 +- files/ru/web/html/element/input/range/index.html | 2 +- files/ru/web/html/element/link/index.html | 2 +- files/ru/web/html/element/meta/index.html | 4 +- files/ru/web/html/element/progress/index.html | 2 +- files/ru/web/html/element/track/index.html | 2 +- files/ru/web/html/global_attributes/index.html | 2 +- .../http/cors/errors/corsdidnotsucceed/index.html | 2 +- files/ru/web/http/csp/index.html | 2 +- files/ru/web/http/redirections/index.html | 4 +- files/ru/web/http/status/100/index.html | 2 +- files/ru/web/javascript/eventloop/index.html | 2 +- .../guide/details_of_the_object_model/index.html | 52 +++++++++++----------- .../javascript/guide/grammar_and_types/index.html | 2 +- .../javascript/guide/numbers_and_dates/index.html | 2 +- .../guide/working_with_objects/index.html | 2 +- .../reference/errors/not_defined/index.html | 2 +- .../errors/unnamed_function_statement/index.html | 2 +- .../global_objects/promise/all/index.html | 2 +- .../reference/global_objects/promise/index.html | 6 +-- .../global_objects/promise/reject/index.html | 2 +- .../global_objects/sharedarraybuffer/index.html | 2 +- .../reference/lexical_grammar/index.html | 2 +- .../reference/operators/delete/index.html | 2 +- .../reference/operators/typeof/index.html | 2 +- .../reference/statements/async_function/index.html | 2 +- .../javascript/reference/strict_mode/index.html | 4 +- files/ru/web/mathml/element/merror/index.html | 2 +- .../performance/critical_rendering_path/index.html | 2 +- files/ru/web/performance/fundamentals/index.html | 2 +- .../web/performance/how_browsers_work/index.html | 4 +- .../optimizing_startup_performance/index.html | 4 +- .../installable_pwas/index.html | 2 +- files/ru/web/svg/element/use/index.html | 2 +- files/ru/web/svg/svg_as_an_image/index.html | 2 +- .../svg/tutorial/basic_transformations/index.html | 2 +- .../svg/tutorial/clipping_and_masking/index.html | 2 +- .../web/svg/tutorial/fills_and_strokes/index.html | 2 +- .../tutorial/svg_in_html_introduction/index.html | 2 +- files/ru/web/web_components/index.html | 2 +- files/ru/webassembly/c_to_wasm/index.html | 2 +- files/ru/webassembly/exported_functions/index.html | 2 +- .../ru/webassembly/loading_and_running/index.html | 2 +- files/ru/webassembly/rust_to_wasm/index.html | 4 +- 195 files changed, 285 insertions(+), 285 deletions(-) (limited to 'files/ru') diff --git a/files/ru/conflicting/web/javascript/guide/introduction/index.html b/files/ru/conflicting/web/javascript/guide/introduction/index.html index 155240f7d6..d77cb2c0ec 100644 --- a/files/ru/conflicting/web/javascript/guide/introduction/index.html +++ b/files/ru/conflicting/web/javascript/guide/introduction/index.html @@ -121,7 +121,7 @@ original_slug: Web/JavaScript/Guide/About

Советы изучающим JavaScript

-

Начать изучать JavaScript очень легко: все что вам нужно - это современный веб браузер. Этот учебник включает описание некоторых особенностей JavaScript, которые доступны только в самых последних версиях Firefox (и других браузерах основанных на движке Gecko), так что лучше всего воспользоваться самой последней версией Firefox.

+

Начать изучать JavaScript очень легко: всё что вам нужно - это современный веб браузер. Этот учебник включает описание некоторых особенностей JavaScript, которые доступны только в самых последних версиях Firefox (и других браузерах основанных на движке Gecko), так что лучше всего воспользоваться самой последней версией Firefox.

Интерактивный интерпретатор.

diff --git a/files/ru/conflicting/web/javascript/reference/global_objects/proxy/proxy/index.html b/files/ru/conflicting/web/javascript/reference/global_objects/proxy/proxy/index.html index 59ad23d271..300a6fab10 100644 --- a/files/ru/conflicting/web/javascript/reference/global_objects/proxy/proxy/index.html +++ b/files/ru/conflicting/web/javascript/reference/global_objects/proxy/proxy/index.html @@ -70,7 +70,7 @@ original_slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler {{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots', 'Proxy Object Internal Methods and Internal Slots')}} {{Spec2('ESDraft')}} - Обработчик enumerate был удален. + Обработчик enumerate был удалён. diff --git a/files/ru/games/index.html b/files/ru/games/index.html index f049abd074..1465371e3e 100644 --- a/files/ru/games/index.html +++ b/files/ru/games/index.html @@ -21,7 +21,7 @@ translation_of: Games
Введение в разработку игр для Web
Ознакомление с технологиями, полезными для разработчиков игр, а также - как начать разработку игр, используя Web-технологии. Эта статья также рассматривает бизнес-кейс для создания web-игр.
Анатомия видео игр
-
Что такое видео игры на самом деле? Есть определённые вещи, которые являются общими для всех игр (даже если, на первый взгляд, так и не кажется). Данная статья попытается объяснить такие понятия, как основные циклы, в совершенно общем контексте. При этом она все равно соответствует веб-стандартам.
+
Что такое видео игры на самом деле? Есть определённые вещи, которые являются общими для всех игр (даже если, на первый взгляд, так и не кажется). Данная статья попытается объяснить такие понятия, как основные циклы, в совершенно общем контексте. При этом она всё равно соответствует веб-стандартам.
Особые обсуждения для разработчиков игр
Эта статья из App Center бегло рассматривает вещи, которые необходимо учитывать при попытке создать игру, которая будет работать как открытое веб-приложение.
@@ -30,9 +30,9 @@ translation_of: Games
Создание Новых Игр
-
Совместный сайт с участием большого количества открытых веб-обучающих программ по разработке игр. Не очень активно в последнее время, но все же содержит несколько хороших ресурсов.
+
Совместный сайт с участием большого количества открытых веб-обучающих программ по разработке игр. Не очень активно в последнее время, но всё же содержит несколько хороших ресурсов.
Creative JS
-
Коллекция впечатляющих JavaScript методов и экспериментов, не специфичных для игр, но тем не менее полезных. Не очень активно в последнее время, но все же содержит несколько хороших ресурсов.
+
Коллекция впечатляющих JavaScript методов и экспериментов, не специфичных для игр, но тем не менее полезных. Не очень активно в последнее время, но всё же содержит несколько хороших ресурсов.
Шаблоны программирования игр
Онлайн-книга, написанная Bob Nystrom, которая рассказывает о шаблонах программирования в контексте разработки игр с целью помочь разработчикам создавать более эффективный, рациональный код.
Artillery blog
diff --git a/files/ru/games/introduction/index.html b/files/ru/games/introduction/index.html index 088d012235..91f7517e0a 100644 --- a/files/ru/games/introduction/index.html +++ b/files/ru/games/introduction/index.html @@ -75,7 +75,7 @@ original_slug: Games/Ввод

6. Вы можете управлять своими отношениями с клиентами более тесно, по-своему. Больше не придётся работать с обратной связью магазина приложений. Взаимодействуйте со своими клиентами так, как вы хотите, без посредника.

-

7. Ваши игроки могут играть в вашу игру в любом месте, в любое время. Поскольку Web распространён повсеместно, ваши клиенты могут проверить статус своей игры на своих телефонах, планшетах, домашних ноутбуках, рабочих столах или на чем-либо еще.

+

7. Ваши игроки могут играть в вашу игру в любом месте, в любое время. Поскольку Web распространён повсеместно, ваши клиенты могут проверить статус своей игры на своих телефонах, планшетах, домашних ноутбуках, рабочих столах или на чем-либо ещё.

Web-технологии для разработчиков игр

diff --git a/files/ru/games/techniques/3d_on_the_web/building_up_a_basic_demo_with_three.js/index.html b/files/ru/games/techniques/3d_on_the_web/building_up_a_basic_demo_with_three.js/index.html index 1df6408271..ce110daaa6 100644 --- a/files/ru/games/techniques/3d_on_the_web/building_up_a_basic_demo_with_three.js/index.html +++ b/files/ru/games/techniques/3d_on_the_web/building_up_a_basic_demo_with_three.js/index.html @@ -106,7 +106,7 @@ scene.add(camera);

Отрисовка сцены

-

Все уже готово, но мы пока что ничего не видим. Хотя мы настроили рендерер, нам все равно нужно запустить рендеринг. Функция render() выполнит эту работу с небольшой помощью requestAnimationFrame(), которая заставляет сцену постоянно перерисовываться в каждом кадре:

+

Всё уже готово, но мы пока что ничего не видим. Хотя мы настроили рендерер, нам всё равно нужно запустить рендеринг. Функция render() выполнит эту работу с небольшой помощью requestAnimationFrame(), которая заставляет сцену постоянно перерисовываться в каждом кадре:

function render() {
 	requestAnimationFrame(render);
diff --git a/files/ru/games/techniques/controls_gamepad_api/index.html b/files/ru/games/techniques/controls_gamepad_api/index.html
index 6f84031d8d..2d4cc54bce 100644
--- a/files/ru/games/techniques/controls_gamepad_api/index.html
+++ b/files/ru/games/techniques/controls_gamepad_api/index.html
@@ -55,7 +55,7 @@ translation_of: Games/Techniques/Controls_Gamepad_API
 
 

Hungry Fridge demo using Gamepad API

-

Код, описанный ниже, взят из полной версии игры Hungry Fridge, но он почти идентичен демо-версии — единственная разница заключается в том, что полная версия использует переменную turbo, чтобы решить, будет ли игра запущена с использованием режима Super Turbo. Он работает независимо, поэтому его можно включить, даже если геймпад не подключен.

+

Код, описанный ниже, взят из полной версии игры Hungry Fridge, но он почти идентичен демо-версии — единственная разница заключается в том, что полная версия использует переменную turbo, чтобы решить, будет ли игра запущена с использованием режима Super Turbo. Он работает независимо, поэтому его можно включить, даже если геймпад не подключён.

ПРИМЕЧАНИЕ: время пасхальных яиц: есть скрытая опция для запуска Super Turbo Hungry Fridge на рабочем столе без подключения геймпада — нажмите на значок геймпада в правом верхнем углу экрана. Он запустит игру в режиме Super Turbo, и Вы сможете управлять холодильником с помощью клавиатуры: A и D для поворота башни влево и вправо, W для стрельбы и клавиш со стрелками для перемещения.

@@ -171,7 +171,7 @@ window.addEventListener("gamepaddisconnected", gamepadAPI.disconnect); },
-

На каждом кадре, update() сохраняет кнопки, нажатые во время предыдущего кадра, в массиве buttonsCache и берет новые из объекта gamepadAPI.controller. Затем он проходит по кнопкам и осям, чтобы получить их фактические состояния и значения.

+

На каждом кадре, update() сохраняет кнопки, нажатые во время предыдущего кадра, в массиве buttonsCache и берёт новые из объекта gamepadAPI.controller. Затем он проходит по кнопкам и осям, чтобы получить их фактические состояния и значения.

Обнаружение нажатия кнопок

diff --git a/files/ru/games/tutorials/2d_breakout_game_pure_javascript/finishing_up/index.html b/files/ru/games/tutorials/2d_breakout_game_pure_javascript/finishing_up/index.html index 5c09478700..f1ce286e2c 100644 --- a/files/ru/games/tutorials/2d_breakout_game_pure_javascript/finishing_up/index.html +++ b/files/ru/games/tutorials/2d_breakout_game_pure_javascript/finishing_up/index.html @@ -19,7 +19,7 @@ original_slug: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Заключен

Это 10-й и заключительный шаг в Gamedev Canvas tutorial. Вы можете найти исходный код, как он должен выглядеть, после завершения этого урока в Gamedev-Canvas-workshop/lesson10.html.

-

В любой игре, которую мы пишем, всегда есть место для улучшений. Например, мы можем предложить игроку несколько жизней. Они могут сделать несколько ошибок и все равно закончить игру. Мы также можем улучшить отрисовку кода.

+

В любой игре, которую мы пишем, всегда есть место для улучшений. Например, мы можем предложить игроку несколько жизней. Они могут сделать несколько ошибок и всё равно закончить игру. Мы также можем улучшить отрисовку кода.

Предоставление игроку нескольких жизней

diff --git a/files/ru/glossary/character_encoding/index.html b/files/ru/glossary/character_encoding/index.html index a3d2cc9a96..8232bd931f 100644 --- a/files/ru/glossary/character_encoding/index.html +++ b/files/ru/glossary/character_encoding/index.html @@ -15,7 +15,7 @@ original_slug: Словарь/character_encoding
<meta charset="utf-8">
-

Это гарантирует, что вы можете использовать символы практически любого человеческого языка в вашем HTML-документе, и они будут отображаться надежно.

+

Это гарантирует, что вы можете использовать символы практически любого человеческого языка в вашем HTML-документе, и они будут отображаться надёжно.

Узнать больше

diff --git a/files/ru/glossary/php/index.html b/files/ru/glossary/php/index.html index a1db2d08a1..1956c8cbb3 100644 --- a/files/ru/glossary/php/index.html +++ b/files/ru/glossary/php/index.html @@ -5,7 +5,7 @@ translation_of: Glossary/PHP original_slug: Словарь/PHP ---
-
PHP, расшифровывающийся как "PHP: Hypertext Preprocessor" - «PHP: Препроцессор Гипертекста», является распространённым интерпретируемым языком общего назначения с открытым исходным кодом. PHP создавался специально для ведения web-разработок и код на нем может внедряться непосредственно в HTML-код. Синтаксис языка берет начало из C, Java и Perl, и является лёгким для изучения. Основной целью PHP является предоставление web-разработчикам возможности быстрого создания динамически генерируемых web-страниц, однако область применения PHP не ограничивается только этим.
+
PHP, расшифровывающийся как "PHP: Hypertext Preprocessor" - «PHP: Препроцессор Гипертекста», является распространённым интерпретируемым языком общего назначения с открытым исходным кодом. PHP создавался специально для ведения web-разработок и код на нем может внедряться непосредственно в HTML-код. Синтаксис языка берёт начало из C, Java и Perl, и является лёгким для изучения. Основной целью PHP является предоставление web-разработчикам возможности быстрого создания динамически генерируемых web-страниц, однако область применения PHP не ограничивается только этим.

Узнать больше

diff --git a/files/ru/glossary/primitive/index.html b/files/ru/glossary/primitive/index.html index 39f3f3aac6..73761a6add 100644 --- a/files/ru/glossary/primitive/index.html +++ b/files/ru/glossary/primitive/index.html @@ -36,7 +36,7 @@ console.log(foo); // ["plugh"] bar = bar.toUpperCase(); // BAZ -

Примитив может быть заменён, но он не может быть напрямую изменен.

+

Примитив может быть заменён, но он не может быть напрямую изменён.

Другой пример [ Step-by-step ]

@@ -71,7 +71,7 @@ console.log(foo); // 5
diff --git a/files/ru/learn/css/styling_text/styling_links/index.html b/files/ru/learn/css/styling_text/styling_links/index.html index 993e92c7b8..710a785e66 100644 --- a/files/ru/learn/css/styling_text/styling_links/index.html +++ b/files/ru/learn/css/styling_text/styling_links/index.html @@ -55,7 +55,7 @@ translation_of: Learn/CSS/Styling_text/Styling_links

Вы заметите несколько вещей при изучении стилей по умолчанию:

diff --git a/files/ru/web/api/node/index.html b/files/ru/web/api/node/index.html index 712c65e0b6..cb8fd75f41 100644 --- a/files/ru/web/api/node/index.html +++ b/files/ru/web/api/node/index.html @@ -108,7 +108,7 @@ translation_of: Web/API/Node
{{domxref("Node.parentElement")}} {{readonlyInline}}
Возвращает {{domxref("Element")}} который является родителем данного узла. Если узел не имеет родителя или если родитель не {{domxref("Element")}}, это свойство вернёт null.
{{domxref("Node.prefix")}} {{obsolete_inline}}{{readonlyInline}}
-
{{domxref("DOMString")}} представляющий префикс пространства имён узла или null если нет префикса точно определенного.
+
{{domxref("DOMString")}} представляющий префикс пространства имён узла или null если нет префикса точно определённого.
Хотя недавние спецификации требуют того, чтобы префикс был определён как интерфейс {{domxref("Element")}}, браузеры основанные на Gecko ещё реализовывают его как интерфейс {{domxref("Node")}}.
{{domxref("Node.previousSibling")}} {{readonlyInline}}
Возвращают {{domxref("Node")}} представляющий предыдущий узел древа или null, если нет такого узла.
diff --git a/files/ru/web/api/node/insertbefore/index.html b/files/ru/web/api/node/insertbefore/index.html index b512bffba9..2bf393bc60 100644 --- a/files/ru/web/api/node/insertbefore/index.html +++ b/files/ru/web/api/node/insertbefore/index.html @@ -73,7 +73,7 @@ var newElement = document.createElement("div"); parentElement.insertBefore(newElement, theFirstChild); -

Когда у родителя нет первого дочернего элемента, firstChild вернёт null. Новый элемент все равно будет выставляться после последнего дочернего элемента. Но так как родитель не имеет первого дочернего элемента, то он не будет иметь и последнего. Следовательно, после добавления в него элемента, этот элемент будет единственным дочерним элементом.

+

Когда у родителя нет первого дочернего элемента, firstChild вернёт null. Новый элемент всё равно будет выставляться после последнего дочернего элемента. Но так как родитель не имеет первого дочернего элемента, то он не будет иметь и последнего. Следовательно, после добавления в него элемента, этот элемент будет единственным дочерним элементом.

Совместимость с браузерами

diff --git a/files/ru/web/api/node/issupported/index.html b/files/ru/web/api/node/issupported/index.html index 2ffbdadbca..d4db362dbb 100644 --- a/files/ru/web/api/node/issupported/index.html +++ b/files/ru/web/api/node/issupported/index.html @@ -115,7 +115,7 @@ translation_of: Web/API/Node/isSupported

Gecko-специфичные замечания

-

[1] Начиная с Gecko 19.0 {{geckoRelease("19.0")}} этот метод всегда будет возвращать true ({{bug("801425")}}) и начиная с Gecko 22.0 {{geckoRelease("22.0")}} этот метод был удален.

+

[1] Начиная с Gecko 19.0 {{geckoRelease("19.0")}} этот метод всегда будет возвращать true ({{bug("801425")}}) и начиная с Gecko 22.0 {{geckoRelease("22.0")}} этот метод был удалён.

Смотрите также

diff --git a/files/ru/web/api/node/lookupnamespaceuri/index.html b/files/ru/web/api/node/lookupnamespaceuri/index.html index d37ac9f73a..4dc20c5c52 100644 --- a/files/ru/web/api/node/lookupnamespaceuri/index.html +++ b/files/ru/web/api/node/lookupnamespaceuri/index.html @@ -5,7 +5,7 @@ translation_of: Web/API/Node/lookupNamespaceURI ---
{{APIRef("DOM")}}
-

Метод Node.lookupNamespaceURI() берет префикс и возвращает пространство имён URI связанное с ним в данном узле, если найден (и null если нет). Устанавливает null для префикса который возвращает пространство имён по умолчанию.

+

Метод Node.lookupNamespaceURI() берёт префикс и возвращает пространство имён URI связанное с ним в данном узле, если найден (и null если нет). Устанавливает null для префикса который возвращает пространство имён по умолчанию.

Из-за ошибки bug 312019, этот метод не работает с динамическим назначением пространства имён (т.е., с уставленным тем же Node.prefix).

diff --git a/files/ru/web/api/node/namespaceuri/index.html b/files/ru/web/api/node/namespaceuri/index.html index 479df26e24..aceba64d3f 100644 --- a/files/ru/web/api/node/namespaceuri/index.html +++ b/files/ru/web/api/node/namespaceuri/index.html @@ -32,7 +32,7 @@ translation_of: Web/API/Node/namespaceURI

Вы можете создать элемент с конкретным namespaceURI используйте метод DOM Level 2 document.createElementNS.

-

Через пространство имён в XML спецификации, атрибуты не наследуют пространство имён для элемента к которому он прикреплён. Если у атрибута не задано явно пространство имён, он не имеет пространства имен.

+

Через пространство имён в XML спецификации, атрибуты не наследуют пространство имён для элемента к которому он прикреплён. Если у атрибута не задано явно пространство имён, он не имеет пространства имён.

DOM не обрабатывает или не вынуждает проверять пространство имён как таковое. Приложения выше DOM, делают необходимые проверки. Отметим также, что префикс пространства имён, когда он связан с конкретным узлом, не может быть изменён.

diff --git a/files/ru/web/api/node/replacechild/index.html b/files/ru/web/api/node/replacechild/index.html index ae9a375735..f1bbaa172a 100644 --- a/files/ru/web/api/node/replacechild/index.html +++ b/files/ru/web/api/node/replacechild/index.html @@ -19,8 +19,8 @@ original_slug: Web/API/Node.replaceChild
replacedNode = parentNode.replaceChild(newChild, oldChild);
 
    -
  • newChild элемент на который будет заменён oldChild. В случает если он уже есть в DOM, то сначала он будет удален.
  • -
  • oldChild элемент который будет заменен.
  • +
  • newChild элемент на который будет заменён oldChild. В случает если он уже есть в DOM, то сначала он будет удалён.
  • +
  • oldChild элемент который будет заменён.
  • replacedNode заменённый элемент. Тоже самое что и oldChild.

Пример

diff --git a/files/ru/web/api/performance/index.html b/files/ru/web/api/performance/index.html index bc721672b6..47d7221e51 100644 --- a/files/ru/web/api/performance/index.html +++ b/files/ru/web/api/performance/index.html @@ -60,7 +60,7 @@ translation_of: Web/API/Performance
{{domxref("Performance.measure()")}}
Создаёт именованную {{domxref("DOMHighResTimeStamp","временну́ю метку")}} в буфере записей производительности браузера между двумя определёнными метками (известных как start mark (начальная метка) и end mark (конечная метка), соответственно).
{{domxref("Performance.now()")}}
-
Возвращает объект {{domxref("DOMHighResTimeStamp")}}, представляющий количество миллисекунд, прошедших с начала момента отсчета.
+
Возвращает объект {{domxref("DOMHighResTimeStamp")}}, представляющий количество миллисекунд, прошедших с начала момента отсчёта.
{{domxref("Performance.setResourceTimingBufferSize()")}}
Устанавливает размер буфера измерения ресурсов браузера равным указанному числу объектов {{domxref("PerformanceEntry","записей производительности")}} {{domxref("PerformanceEntry.entryType","типа")}} "resource".
{{domxref("Performance.toJSON()")}}
diff --git a/files/ru/web/api/pointer_lock_api/index.html b/files/ru/web/api/pointer_lock_api/index.html index 380e2b0888..e0fd2ace29 100644 --- a/files/ru/web/api/pointer_lock_api/index.html +++ b/files/ru/web/api/pointer_lock_api/index.html @@ -5,7 +5,7 @@ translation_of: Web/API/Pointer_Lock_API ---

Pointer lock API(прежнее название Mouse Lock API) обеспечивает методы ввода, основанные на движении мыши , а не только абсолютно позиционированых координатах курсора в окне. Это даёт вам доступ к необработанным движениям мыши, прикрепляет курсор мыши к любому элементу в окне браузера, предоставляет возможность вычислять координаты мыши не ограниченной областью окна проекции, и скрывает курсор из поля зрения. Это идеальное решение для 3D игр, например.

-

Более того, API полезно для любых приложений, которые используют данные мыши для управления движениями, вращения объектов и изменения записей. Например пользователь может управлять наклоном просто двигая мышь, не нажимая ни на какие кнопки. Сами кнопки освобождаются под другие задачи. Примерами могут послужить  программы для просмотра карт или спутниковой съемки.

+

Более того, API полезно для любых приложений, которые используют данные мыши для управления движениями, вращения объектов и изменения записей. Например пользователь может управлять наклоном просто двигая мышь, не нажимая ни на какие кнопки. Сами кнопки освобождаются под другие задачи. Примерами могут послужить  программы для просмотра карт или спутниковой съёмки.

Блокировка указателя позволяет вам получить доступ к данным мыши, даже если курсор ушёл за границы экрана или браузера. Например, ваши пользователи могут продолжать вращать или управлять 3D моделью движением мыши бесконечно. Без блокировки вращение или управление останавливается, как только курсор достигает края браузера или экрана. Геймеры теперь могут нажимать кнопки и водить курсором взад и вперёд, не боясь покинуть игровое поле и случайно переключится на другое приложение.

diff --git a/files/ru/web/api/push_api/index.html b/files/ru/web/api/push_api/index.html index 7fbf680b2b..77311c658f 100644 --- a/files/ru/web/api/push_api/index.html +++ b/files/ru/web/api/push_api/index.html @@ -36,7 +36,7 @@ translation_of: Web/API/Push_API

Service worker будет запущен для того чтобы обрабатывать входящие push сообщения, которые будут доставлены в {{domxref("ServiceWorkerGlobalScope.onpush")}} обработчик события. Это позволит приложению реагировать на push сообщения, к примеру показывать нотификации через метод {{domxref("ServiceWorkerRegistration.showNotification()")}}.

-

Каждая подписка уникальна по отношению к service worker. Адрес для подписки это уникальный capability URL: все что нужно чтобы отослать сообщение вашему приложению это адрес. Однако это URL необходимо держать в секрете, иначе любое другое приложение сможет слать push уведомление к вашему приложению.

+

Каждая подписка уникальна по отношению к service worker. Адрес для подписки это уникальный capability URL: всё что нужно чтобы отослать сообщение вашему приложению это адрес. Однако это URL необходимо держать в секрете, иначе любое другое приложение сможет слать push уведомление к вашему приложению.

Использование service worker для получения push уведомлений может привести к повышенному потреблению ресурсов, например это может влиять на расход батареи. Во всех браузерах это работает по разному - нет стандарта на этот счёт. К примеру Firefox позволяет лишь ограниченное число уведомлений которое может быть отправлено приложению, а Chrome не имеет таких ограничений, однако обязывает показывать уведомление пользователю каждый раз, чтобы пользователь мог решить хочет он или нет принимать их дальше.

diff --git a/files/ru/web/api/rtcpeerconnection/index.html b/files/ru/web/api/rtcpeerconnection/index.html index 676d536252..55a24c974e 100644 --- a/files/ru/web/api/rtcpeerconnection/index.html +++ b/files/ru/web/api/rtcpeerconnection/index.html @@ -47,7 +47,7 @@ translation_of: Web/API/RTCPeerConnection
Событие объекта RTCPeerConnection возникает, когда свойство {{domxref("MediaStreamTrack.isolated", "isolated")}} на одном из объектов  {{domxref("MediaStreamTrack")}} , связанного с соединением изменяет своё значение. Объект трека является изолированным {{domxref("MediaStreamTrack.isolated", "isolated")}}, если его содержимое не может быть доступно содержащему его документу, по причине невозможности аутентификации, или объект трека прибыл не из источника происхождения страницы.
Так же, доступно через свойство установки обработчика {{domxref("RTCPeerConnection.onisolationchange", "onisolationchange")}}.
{{domxref("RTCPeerConnection.negotiationneeded_event", "negotiationneeded")}}
-
Событие объекта RTCPeerConnection возникает, когда необходимо запустить согласование (пересогласование) ICE соединения; может произойти при первом открытии соединения , или при необходимости принятия изменений условий сети. Получатель должен ответить, создав предложение и отправив его другому партнеру. 
+
Событие объекта RTCPeerConnection возникает, когда необходимо запустить согласование (пересогласование) ICE соединения; может произойти при первом открытии соединения , или при необходимости принятия изменений условий сети. Получатель должен ответить, создав предложение и отправив его другому партнёру. 
Так же, доступно через свойство установки обработчика {{domxref("RTCPeerConnection.onnegotiationneeded", "onnegotiationneeded")}}.
{{domxref("RTCPeerConnection.signalingstatechange_event", "signalingstatechange")}}
Событие signalingstatechange возникает, когда статус сигнализации ICE соединения изменился..
diff --git a/files/ru/web/api/service_worker_api/using_service_workers/index.html b/files/ru/web/api/service_worker_api/using_service_workers/index.html index 4fc2235590..363d4331eb 100644 --- a/files/ru/web/api/service_worker_api/using_service_workers/index.html +++ b/files/ru/web/api/service_worker_api/using_service_workers/index.html @@ -13,7 +13,7 @@ translation_of: Web/API/Service_Worker_API/Using_Service_Workers

Предпосылки появления Service Workers

-

Одной из важнейших проблем, от которой страдали пользователи веб-приложений, была работа в условиях потери связи. Лучшее в мире веб-приложение оставит ужасное впечатление от использования, если вы не сможете его загрузить. Предпринималось много попыток создания технологий, которые бы решили эту проблему, и если верить страницам нашего Форума, некоторые из вопросов были решены. Но все же наиважнейшей проблемой по-прежнему является отсутствие хорошего механизма для управления кешем ресурсов и настраиваемыми сетевыми запросами.
+

Одной из важнейших проблем, от которой страдали пользователи веб-приложений, была работа в условиях потери связи. Лучшее в мире веб-приложение оставит ужасное впечатление от использования, если вы не сможете его загрузить. Предпринималось много попыток создания технологий, которые бы решили эту проблему, и если верить страницам нашего Форума, некоторые из вопросов были решены. Но всё же наиважнейшей проблемой по-прежнему является отсутствие хорошего механизма для управления кешем ресурсов и настраиваемыми сетевыми запросами.

Предыдущей попыткой была технология AppCache, казавшаяся хорошей идеей, потому как позволяла действительно просто указывать ресурсы для кеширования. Однако, эта технология допускает много предположений о том, что вы пытаетесь сделать, и затем с грохотом ломается, когда ваше приложение работает не в точности с этими допущениями. Чтобы получить больше информации по этой теме, прочитайте (неудачно названную, но хорошо написанную) статью Джейка Арчибальда Application Cache is a Douchebag.

@@ -83,7 +83,7 @@ translation_of: Web/API/Service_Worker_API/Using_Service_Workers

В первом примере код, идущий за вызовом функции myFunction(), будет ждать завершения вызова и возврата значения. Во втором примере myFunction() возвращает промис для value, в этом случае, последующий код сможет выполняться, не дожидаясь завершения основной работы функции. Когда промис разрешится, код, переданный методу then, будет выполнен асинхронно.

-

А вот вам реальный пример: что, если мы хотим загружать изображения динамически, к тому же мы желаем удостовериться, что изображения загрузились до того, как они будут показаны? То, что мы хотим сделать, является стандартной задачей, но она все же может доставить головной боли. Мы можем использовать .onload, чтобы показать изображение только после загрузки, но что делать с событиями, которые могут произойти до того, как мы начнём их слушать? Мы могли бы использовать .complete, но оно все ещё ненадёжно, да и что делать с повторяющимися изображениями? И наконец все это работает синхронно, блокируя главный поток.

+

А вот вам реальный пример: что, если мы хотим загружать изображения динамически, к тому же мы желаем удостовериться, что изображения загрузились до того, как они будут показаны? То, что мы хотим сделать, является стандартной задачей, но она всё же может доставить головной боли. Мы можем использовать .onload, чтобы показать изображение только после загрузки, но что делать с событиями, которые могут произойти до того, как мы начнём их слушать? Мы могли бы использовать .complete, но оно все ещё ненадёжно, да и что делать с повторяющимися изображениями? И наконец все это работает синхронно, блокируя главный поток.

Вместо этого мы можем написать собственный промис для работы с подобными случаями. (Вы можете найти исходный код в нашем примере Promises test или взглянуть на живое демо.)

@@ -177,7 +177,7 @@ imgLoad('myLittleVader.jpg').then((response) => {
  • Далее, чтобы зарегистрировать сервис-воркера для этого сайта, мы используем функцию {{domxref("ServiceWorkerContainer.register()") }}. Сервис-воркер представляет собой JavaScript-файл приложения (обратите внимание, что URL указывается относительно "корня", а не места расположения JS-файла, регистрирующего сервис-воркер).
  • Параметр scope - не обязателен, он может быть использован для указания подмножества контента, которое вы хотите отдать под контроль сервис-воркера. В нашем случае, мы указали './sw-test/'. Если вы не укажете его, то будет использовано значение по умолчанию; мы же указали его только в целях иллюстрации.
  • Метод .then() был использован для обработки успешной регистрации. Если промис разрешится успешно, то код, переданный этому методу, будет выполнен.
  • -
  • Ну и наконец, в конец нашего промиса мы добавляем функцию .catch(), которая будет выполнена в случае, если промис будет отклонен.
  • +
  • Ну и наконец, в конец нашего промиса мы добавляем функцию .catch(), которая будет выполнена в случае, если промис будет отклонён.
  • Предыдущий код регистрирует сервис-воркера, который работает в worker-контексте, и следовательно, не имеет доступа к DOM. Затем вы запускаете код в сервис-воркере, вне ваших страниц, чтобы контролировать их загрузку.

    diff --git a/files/ru/web/api/streams_api/index.html b/files/ru/web/api/streams_api/index.html index 3ed4fc27ae..6f0decb53b 100644 --- a/files/ru/web/api/streams_api/index.html +++ b/files/ru/web/api/streams_api/index.html @@ -11,7 +11,7 @@ translation_of: Web/API/Streams_API

    Потоковая передача данных предполагает разбивку ресурса, который вы хотите получить через сеть, на мелкие кусочки и затем их обработку часть за частью. Это то, что браузеры делают в любом случае получения ассетов, чтобы показать их на страницах — видео буфер и другие ресурсы доступные для воспроизведения, и иногда это заметно на изображениях, загружающихся частями.

    -

    Но методы работы с этим и данные никогда прежде не были доступны для JavaScript. Раньше, если мы хотели обработать часть ресурса, нам все равно пришлось бы загрузить весь файл (будь то видео, текстовый файл и т.п.), мы были бы обязаны скачать файл целиком, дождаться пока он будет приведён к необходимому формату и только потом работать с файлом после его полной загрузки.

    +

    Но методы работы с этим и данные никогда прежде не были доступны для JavaScript. Раньше, если мы хотели обработать часть ресурса, нам всё равно пришлось бы загрузить весь файл (будь то видео, текстовый файл и т.п.), мы были бы обязаны скачать файл целиком, дождаться пока он будет приведён к необходимому формату и только потом работать с файлом после его полной загрузки.

    С помощью потоков доступных в JavaScript меняется все — вы можете начать обрабатывать данные бит за битом как только данные появляются на стороне клиента, без необходимости генерировать буфер, строку или какой либо объект из потока.

    diff --git a/files/ru/web/api/touch_events/index.html b/files/ru/web/api/touch_events/index.html index fd86517821..aabedcb58d 100644 --- a/files/ru/web/api/touch_events/index.html +++ b/files/ru/web/api/touch_events/index.html @@ -332,6 +332,6 @@ Log: <pre id="log" style="border: 1px solid #ccc;"></pre>

    В Firefox события касания отключены, когда отключён e10s (электролиз; многопроцессорный Firefox). e10s включён по умолчанию в Firefox, но может в конечном итоге отключаться в определённых ситуациях, например, когда установлены определённые инструменты специальных возможностей или надстройки Firefox, для работы которых требуется отключение e10s. Это означает, что даже на настольном компьютере / ноутбуке с сенсорным экраном сенсорные события не будут включены.

    -

    Вы можете проверить, отключён ли e10s, перейдя в about:support и посмотрев на запись «Многопроцессорная Windows» в разделе «Основы приложения». 1/1 означает, что он включён, 0/1 означает отключен.

    +

    Вы можете проверить, отключён ли e10s, перейдя в about:support и посмотрев на запись «Многопроцессорная Windows» в разделе «Основы приложения». 1/1 означает, что он включён, 0/1 означает отключён.

    Если вы хотите принудительно включить e10s - чтобы явно повторно включить поддержку сенсорных событий - вам нужно перейти к about:config и создать новое логическое предпочтение browser.tabs.remote.force-enable. Установите значение true, перезапустите браузер, и e10s будет включён независимо от любых других настроек.

    diff --git a/files/ru/web/api/vrpose/position/index.html b/files/ru/web/api/vrpose/position/index.html index ba2d4ab6cd..76b94b6fcc 100644 --- a/files/ru/web/api/vrpose/position/index.html +++ b/files/ru/web/api/vrpose/position/index.html @@ -32,7 +32,7 @@ translation_of: Web/API/VRPose/position

    Значение (типа Float)  {{domxref("Float32Array")}}, или ноль, если датчик VR не может предоставить данные о местоположении.

    -

    Примечание: Пользовательские агенты могут предоставлять эмулированные значения положения с помощью таких методов, как моделирование шеи; при этом они все равно должны сообщать параметр {{domxref ("VRDisplayCapabilities.hasPosition")}} как ложные.

    +

    Примечание: Пользовательские агенты могут предоставлять эмулированные значения положения с помощью таких методов, как моделирование шеи; при этом они всё равно должны сообщать параметр {{domxref ("VRDisplayCapabilities.hasPosition")}} как ложные.

    Пример

    diff --git a/files/ru/web/api/web_audio_api/visualizations_with_web_audio_api/index.html b/files/ru/web/api/web_audio_api/visualizations_with_web_audio_api/index.html index 63e50078b7..a64b370af2 100644 --- a/files/ru/web/api/web_audio_api/visualizations_with_web_audio_api/index.html +++ b/files/ru/web/api/web_audio_api/visualizations_with_web_audio_api/index.html @@ -127,7 +127,7 @@ var dataArray = new Uint8Array(bufferLength);

    Создание частотной гистограммы

    -

    Ещё одна визуализация, которую можно создать, - это частотные диаграммы (такие, как строит Winamp). В проекте Voice-change-O-matic есть реализация такой диаграммы. Давайте посмотрим на нее.

    +

    Ещё одна визуализация, которую можно создать, - это частотные диаграммы (такие, как строит Winamp). В проекте Voice-change-O-matic есть реализация такой диаграммы. Давайте посмотрим на неё.

    Сначала мы снова создаём анализатор и массив для данных, затем очищаем холст при помощи clearRect(). Единственное отличие от того, что мы делали раньше - ы том, что мы можем установить намного меньший размер fft. Таким образом, каждый столбец в диаграмме будет выглядеть как столбец, а не как тонкая полоска.

    diff --git a/files/ru/web/api/web_speech_api/using_the_web_speech_api/index.html b/files/ru/web/api/web_speech_api/using_the_web_speech_api/index.html index c78a987ba5..c20696432a 100644 --- a/files/ru/web/api/web_speech_api/using_the_web_speech_api/index.html +++ b/files/ru/web/api/web_speech_api/using_the_web_speech_api/index.html @@ -221,7 +221,7 @@ recognition.onresult = function(event) {

    То же самое приложение из предыдущего примера.
    Ссылка на приложение или репозиторий (клонируем, затем npm install && npm run start в терминале, после чего открыть localhost:4001 в браузере).

    - Пользовательский интерфейс включает в себя набор элементов для ввода текста, задания высоты тона, скорости воспроизведения и непосредственного выбора голоса, которым будет текст произнесен.

    + Пользовательский интерфейс включает в себя набор элементов для ввода текста, задания высоты тона, скорости воспроизведения и непосредственного выбора голоса, которым будет текст произнесён.

    После ввода текста вы можете нажать Play для запуска.

    diff --git a/files/ru/web/api/webrtc_api/using_data_channels/index.html b/files/ru/web/api/webrtc_api/using_data_channels/index.html index 1c2e5b2521..5fc60dc11e 100644 --- a/files/ru/web/api/webrtc_api/using_data_channels/index.html +++ b/files/ru/web/api/webrtc_api/using_data_channels/index.html @@ -20,7 +20,7 @@ translation_of: Web/API/WebRTC_API/Using_data_channels
  • Написать свои скрипты по согласованию транспорта данных, и сигнализированию другому узлу о необходимости присоединения к новому каналу данных.
  • -

    Разберём оба случая, начиная с первого, как с наиболее распространенного.

    +

    Разберём оба случая, начиная с первого, как с наиболее распространённого.

    Автоматический режим согласования

    diff --git a/files/ru/web/api/webvr_api/index.html b/files/ru/web/api/webvr_api/index.html index a1dd13cbc9..a4809c7504 100644 --- a/files/ru/web/api/webvr_api/index.html +++ b/files/ru/web/api/webvr_api/index.html @@ -97,7 +97,7 @@ translation_of: Web/API/WebVR_API
    {{domxref("Window.onvrdisplaydisconnect")}}
    Представляет обработчик событий, который будет запускаться, когда совместимый VR-дисплей был отключён от компьютера (когда {{event("vrdisplaydisconnect")}} событие срабатывает).
    {{domxref("Window.onvrdisplayactivate")}}
    -
    Представляет обработчик событий, который будет выполняться, когда дисплей может быть представлен (когда {{event("vrdisplayactivate")}}событие срабатывает), например, HMD (Head Mounted Display) был перемещён, чтобы вывести его из режима ожидания, или проснулся, будучи перемещенным.
    +
    Представляет обработчик событий, который будет выполняться, когда дисплей может быть представлен (когда {{event("vrdisplayactivate")}}событие срабатывает), например, HMD (Head Mounted Display) был перемещён, чтобы вывести его из режима ожидания, или проснулся, будучи перемещённым.
    {{domxref("Window.onvrdisplaydeactivate")}}
    Представляет обработчик событий, который будет запускаться, когда дисплей больше не будет отображаться (когда {{event("vrdisplaydeactivate")}} событие срабатывает), например, HMD (Head Mounted Display) перешёл в режим ожидания или спящий режим из-за периода бездействия.
    diff --git a/files/ru/web/api/webvr_api/using_the_webvr_api/index.html b/files/ru/web/api/webvr_api/using_the_webvr_api/index.html index 51cdf502b8..1a82614d89 100644 --- a/files/ru/web/api/webvr_api/using_the_webvr_api/index.html +++ b/files/ru/web/api/webvr_api/using_the_webvr_api/index.html @@ -28,7 +28,7 @@ translation_of: Web/API/WebVR_API/Using_the_WebVR_API

    После того, как Вы всё подготовили, можете проверить всё ли работает как следует. Для этого надо открыть простой A-Frame пример и убедиться, что сцена отображается и что можно перейти в VR режим по нажатию на кнопку в правом нижнем углу.

    -

    Фреймворк A-Frame является лучшим вариантом, если Вы хотите быстро создать WebVR-совместимую сцену, не углубляясь в огромное количество JavaScript кода. Однако, пользуясь им, Вы не узнаете о работе с чистым WebVR API, а именно этим мы сейчас и займемся.

    +

    Фреймворк A-Frame является лучшим вариантом, если Вы хотите быстро создать WebVR-совместимую сцену, не углубляясь в огромное количество JavaScript кода. Однако, пользуясь им, Вы не узнаете о работе с чистым WebVR API, а именно этим мы сейчас и займёмся.

    Introducing our demo

    diff --git a/files/ru/web/api/window/alert/index.html b/files/ru/web/api/window/alert/index.html index 7a08e860f4..4f610b0ec0 100644 --- a/files/ru/web/api/window/alert/index.html +++ b/files/ru/web/api/window/alert/index.html @@ -12,7 +12,7 @@ translation_of: Web/API/Window/alert
    window.alert(message);
      -
    • message это опциональная (необязательная) строка текста, которую вы хотите отобразить в диалоговом окне, или же объект, который будет преобразован в строку и отображен.
    • +
    • message это опциональная (необязательная) строка текста, которую вы хотите отобразить в диалоговом окне, или же объект, который будет преобразован в строку и отображён.

    Пример

    diff --git a/files/ru/web/api/window/gamepaddisconnected_event/index.html b/files/ru/web/api/window/gamepaddisconnected_event/index.html index f0aac41e38..55cada8e86 100644 --- a/files/ru/web/api/window/gamepaddisconnected_event/index.html +++ b/files/ru/web/api/window/gamepaddisconnected_event/index.html @@ -3,7 +3,7 @@ title: gamepaddisconnected slug: Web/API/Window/gamepaddisconnected_event translation_of: Web/API/Window/gamepaddisconnected_event --- -

    Событие gampaddisconnected вызывается, когда браузер обнаруживает, что геймпад был отключен.

    +

    Событие gampaddisconnected вызывается, когда браузер обнаруживает, что геймпад был отключён.

    Основная информация

    diff --git a/files/ru/web/api/window/performance/index.html b/files/ru/web/api/window/performance/index.html index 39e11ecbf8..7f765838c8 100644 --- a/files/ru/web/api/window/performance/index.html +++ b/files/ru/web/api/window/performance/index.html @@ -16,7 +16,7 @@ translation_of: Web/API/Window/performance
    {{domxref("Performance.now()", "performance.now()")}}
    -
    Возвращает {{domxref("DOMHighResTimeStamp")}} представляющий количество миллисекунд прошедшее с момента отсчета.
    +
    Возвращает {{domxref("DOMHighResTimeStamp")}} представляющий количество миллисекунд прошедшее с момента отсчёта.
    measure()
    This method stores the DOMHighResTimeStamp duration between two marks along with the associated name (a "measure").
    getEntriesByType()
    diff --git a/files/ru/web/api/window/postmessage/index.html b/files/ru/web/api/window/postmessage/index.html index 749e388816..22c6f6bf88 100644 --- a/files/ru/web/api/window/postmessage/index.html +++ b/files/ru/web/api/window/postmessage/index.html @@ -54,7 +54,7 @@ function receiveMessage(event)

    Если вы не ожидаете получения сообщения от других сайтов, не добавляйте обработчики событий message. Это гарантированный способ избежать проблем с безопасностью.

    -

    Если же вы хотите получать сообщения от других сайтов, то всегда необходимо идентифицировать отправителя, используя origin и возможно source свойства. Любой сайт (включая, например, http://evil.example.com) может отправлять сообщения любым другим, и у вас нет гарантии, что неизвестный отправитель не пошлёт вредоносные сообщения. Однако даже если отправитель известен, вам все равно необходимо всегда подтверждать синтаксис получаемого сообщения. Иначе, дыра в безопасности сайта, которому вы доверяете, может открыть дыру для межсайтового скриптинга на вашем сайте.

    +

    Если же вы хотите получать сообщения от других сайтов, то всегда необходимо идентифицировать отправителя, используя origin и возможно source свойства. Любой сайт (включая, например, http://evil.example.com) может отправлять сообщения любым другим, и у вас нет гарантии, что неизвестный отправитель не пошлёт вредоносные сообщения. Однако даже если отправитель известен, вам всё равно необходимо всегда подтверждать синтаксис получаемого сообщения. Иначе, дыра в безопасности сайта, которому вы доверяете, может открыть дыру для межсайтового скриптинга на вашем сайте.

    Всегда конкретизируйте целевой первоисточник, а не просто *, когда вы используете postMessage для отправки данных другим окнам. Вредоносный сайт может изменить локацию окна без вашего ведома и затем перехватить данные, посылаемые с использованием postMessage.

    diff --git a/files/ru/web/api/windoweventhandlers/onpopstate/index.html b/files/ru/web/api/windoweventhandlers/onpopstate/index.html index 049f842c4f..e51aa9b186 100644 --- a/files/ru/web/api/windoweventhandlers/onpopstate/index.html +++ b/files/ru/web/api/windoweventhandlers/onpopstate/index.html @@ -38,7 +38,7 @@ history.back(); // alerts "location: http://example.com/example.html, state: nul history.go(2); // alerts "location: http://example.com/example.html?page=3, state: {"page":3} -

    Обратите внимание, что даже несмотря на то, что первоначальная запись истории (для http://example.com/example.html) не имеет объекта события, связанного с ней, событие popstate все равно произойдёт, когда мы активируем эту запись после второго вызова history.back().

    +

    Обратите внимание, что даже несмотря на то, что первоначальная запись истории (для http://example.com/example.html) не имеет объекта события, связанного с ней, событие popstate всё равно произойдёт, когда мы активируем эту запись после второго вызова history.back().

    Спецификация

    diff --git a/files/ru/web/api/xmlhttprequest/send/index.html b/files/ru/web/api/xmlhttprequest/send/index.html index 34736d0716..ec462f241c 100644 --- a/files/ru/web/api/xmlhttprequest/send/index.html +++ b/files/ru/web/api/xmlhttprequest/send/index.html @@ -61,7 +61,7 @@ translation_of: Web/API/XMLHttpRequest/send InvalidStateError - send() уже был вызван для запроса, и/или запрос завершен. + send() уже был вызван для запроса, и/или запрос завершён. NetworkError diff --git a/files/ru/web/api/xmlhttprequest/using_xmlhttprequest/index.html b/files/ru/web/api/xmlhttprequest/using_xmlhttprequest/index.html index 0a7d0f9cf4..051a72f559 100644 --- a/files/ru/web/api/xmlhttprequest/using_xmlhttprequest/index.html +++ b/files/ru/web/api/xmlhttprequest/using_xmlhttprequest/index.html @@ -226,7 +226,7 @@ The second line.

    Небольшой классический фреймворк

    -

    Все данные эффекты достигаются с помощью веб браузера, когда вы отправляете {{ HTMLElement("form") }}. Но если вам требуется выполнить все операции с помощью лишь JavaScript, то вам придётся проинструктировать интерпретатор обо всех выполняемых операциях. Для, того чтобы отправлять формы с помощью чистого AJAX, потребуется слишком комплексное описание, чтобы тут рассуждать о нем во всех подробностях. В связи с этим, мы опубликовали здесь полный(но все ещё дидактический) фреймворк, который все же способен использовать все четыре способа отправки и, так же поддерживает файловую загрузку.

    +

    Все данные эффекты достигаются с помощью веб браузера, когда вы отправляете {{ HTMLElement("form") }}. Но если вам требуется выполнить все операции с помощью лишь JavaScript, то вам придётся проинструктировать интерпретатор обо всех выполняемых операциях. Для, того чтобы отправлять формы с помощью чистого AJAX, потребуется слишком комплексное описание, чтобы тут рассуждать о нем во всех подробностях. В связи с этим, мы опубликовали здесь полный(но все ещё дидактический) фреймворк, который всё же способен использовать все четыре способа отправки и, так же поддерживает файловую загрузку.

    <!doctype html>
    diff --git a/files/ru/web/css/@counter-style/additive-symbols/index.html b/files/ru/web/css/@counter-style/additive-symbols/index.html
    index 4ea2a2dc87..b8b2d29f1d 100644
    --- a/files/ru/web/css/@counter-style/additive-symbols/index.html
    +++ b/files/ru/web/css/@counter-style/additive-symbols/index.html
    @@ -7,7 +7,7 @@ translation_of: Web/CSS/@counter-style/additive-symbols
     
     

    Дескриптор аддитивных символов аналогичен дескриптору {{cssxref('symbols')}} и позволяет пользователю указывать символы которые будут использоваться для представлений счётчика, когда значение дескриптора {{cssxref('system')}}  аддитивное. Дескриптор additive-symbols определяет так называемые аддитивные кортежи, каждый из которых представляет собой пару, содержащую символ и неотрицательный целочисленный вес. Аддитивная система используется для построения систем нумерации знаков, таких как римские цифры.

    -

    Когда значение системного дескриптора является циклическим, числовым, буквенным, символическим или фиксированным, дескриптор symbols используется вместо аддитивных символов для указания символов счетчика.

    +

    Когда значение системного дескриптора является циклическим, числовым, буквенным, символическим или фиксированным, дескриптор symbols используется вместо аддитивных символов для указания символов счётчика.

    {{cssinfo}}

    @@ -121,5 +121,5 @@ additive-symbols: 3 "0", 2 url(symbol.png);
    • {{Cssxref("list-style")}}, {{Cssxref("list-style-image")}}, {{Cssxref("list-style-position")}}
    • -
    • {{cssxref("symbols", "symbols()")}}, функциональная запись, создающая анонимные стили счетчиков.
    • +
    • {{cssxref("symbols", "symbols()")}}, функциональная запись, создающая анонимные стили счётчиков.
    diff --git a/files/ru/web/css/_doublecolon_first-letter/index.html b/files/ru/web/css/_doublecolon_first-letter/index.html index 467a9e1e0b..2a2cd2f450 100644 --- a/files/ru/web/css/_doublecolon_first-letter/index.html +++ b/files/ru/web/css/_doublecolon_first-letter/index.html @@ -110,7 +110,7 @@ p::first-letter { {{ SpecName('CSS2.1', 'selector.html#first-letter', '::first-letter') }} {{ Spec2('CSS2.1') }} - Нет измененный. + Нет изменений. {{ SpecName('CSS1', '#the-first-letter-pseudo-element', '::first-letter') }} diff --git a/files/ru/web/css/_doublecolon_first-line/index.html b/files/ru/web/css/_doublecolon_first-line/index.html index 274f6e85c2..fd96eb11da 100644 --- a/files/ru/web/css/_doublecolon_first-line/index.html +++ b/files/ru/web/css/_doublecolon_first-line/index.html @@ -95,7 +95,7 @@ p::first-line { {{SpecName('CSS2.1', 'selector.html#first-line-pseudo', '::first-line')}} {{Spec2('CSS2.1')}} - Нет измененный. + Нет изменений. {{SpecName('CSS1', '#the-first-line-pseudo-element', '::first-line')}} diff --git a/files/ru/web/css/color_value/index.html b/files/ru/web/css/color_value/index.html index 9af9b77755..34c5749054 100644 --- a/files/ru/web/css/color_value/index.html +++ b/files/ru/web/css/color_value/index.html @@ -29,7 +29,7 @@ translation_of: Web/CSS/color_value

    Ключевые цвета

    -

    Ключевые слова для цвета - это идентификаторы без учёта регистра, представляющие определённый цвет, например red, blue, black или lightseagreen. Хотя названия более или менее описывают их соответствующие цвета, они по существу искусственны, без строгого обоснования используемых имен. 

    +

    Ключевые слова для цвета - это идентификаторы без учёта регистра, представляющие определённый цвет, например red, blue, black или lightseagreen. Хотя названия более или менее описывают их соответствующие цвета, они по существу искусственны, без строгого обоснования используемых имён. 

    Есть несколько предостережений, которые следует учитывать при использовании ключевых слов цвета:

    diff --git a/files/ru/web/css/column-rule-color/index.html b/files/ru/web/css/column-rule-color/index.html index 3019c7e417..9660ee90db 100644 --- a/files/ru/web/css/column-rule-color/index.html +++ b/files/ru/web/css/column-rule-color/index.html @@ -7,7 +7,7 @@ translation_of: Web/CSS/column-rule-color ---
    {{CSSRef}}
    -

    CSS свойство column-rule-color устанавливает цвет линии, расположенной между колонками при мультиколоночной верстке.

    +

    CSS свойство column-rule-color устанавливает цвет линии, расположенной между колонками при мультиколоночной вёрстке.

    {{EmbedInteractiveExample("pages/css/column-rule-color.html")}}
    diff --git a/files/ru/web/css/column-rule-style/index.html b/files/ru/web/css/column-rule-style/index.html index a012d070de..6733549044 100644 --- a/files/ru/web/css/column-rule-style/index.html +++ b/files/ru/web/css/column-rule-style/index.html @@ -7,7 +7,7 @@ translation_of: Web/CSS/column-rule-style ---
    {{ CSSRef}}
    -

    CSS свойство column-rule-style устанавливает стиль линии, расположенной между колонками при мультиколоночной верстке.

    +

    CSS свойство column-rule-style устанавливает стиль линии, расположенной между колонками при мультиколоночной вёрстке.

    {{EmbedInteractiveExample("pages/css/column-rule-style.html")}}
    diff --git a/files/ru/web/css/column-rule/index.html b/files/ru/web/css/column-rule/index.html index d48f043c0d..9baf364866 100644 --- a/files/ru/web/css/column-rule/index.html +++ b/files/ru/web/css/column-rule/index.html @@ -7,7 +7,7 @@ translation_of: Web/CSS/column-rule ---
    {{CSSRef}}
    -

    Краткая форма записи CSS свойств column-rule устанавливает ширину, стиль и цвет линии, находящейся между колонками в мультиколоночной верстке.

    +

    Краткая форма записи CSS свойств column-rule устанавливает ширину, стиль и цвет линии, находящейся между колонками в мультиколоночной вёрстке.

    {{EmbedInteractiveExample("pages/css/column-rule.html")}}
    diff --git a/files/ru/web/css/css_animations/tips/index.html b/files/ru/web/css/css_animations/tips/index.html index 15929f6220..5e76a2d9d4 100644 --- a/files/ru/web/css/css_animations/tips/index.html +++ b/files/ru/web/css/css_animations/tips/index.html @@ -79,7 +79,7 @@ translation_of: Web/CSS/CSS_Animations/Tips

    Вот что происходит, когда вызывается функция play() :

      -
    1. Список классов CSS в элементе сбрасывается до простого "box". Это приводит к удалению всех других классов, которые в настоящее время применяются к элементу, включая класс "changing" , который обрабатывает анимацию. Другими словами, мы удаляем анимационный эффект из элемента. Однако изменения в списке классов не вступают в силу до тех пор, пока не будет завершен перерасчет стиля и не произойдет обновление, отражающее это изменение.
    2. +
    3. Список классов CSS в элементе сбрасывается до простого "box". Это приводит к удалению всех других классов, которые в настоящее время применяются к элементу, включая класс "changing" , который обрабатывает анимацию. Другими словами, мы удаляем анимационный эффект из элемента. Однако изменения в списке классов не вступают в силу до тех пор, пока не будет завершён перерасчёт стиля и не произойдёт обновление, отражающее это изменение.
    4. Чтобы убедиться, что стили пересчитаны, мы используем  {{domxref("window.requestAnimationFrame()")}} с колбэком. Наш колбэк выполняется непосредственно перед следующей перерисовкой документа. Проблема заключается в том,что, поскольку это происходит до перерисовки, перерасчёт стиля ещё не произошёл! 
    5. Наш колбэк ловко вызывает requestAnimationFrame() второй раз! На этот раз колбэк выполняется до следующей перерисовки, то есть после того, как произошла перерасчёт стиля. Этот колбэк добавляет класс "changing" обратно в элемент, так что перерисовка снова запустит анимацию.
    diff --git a/files/ru/web/css/css_flexible_box_layout/backwards_compatibility_of_flexbox/index.html b/files/ru/web/css/css_flexible_box_layout/backwards_compatibility_of_flexbox/index.html index 25b5be5ea0..1afa1ba1c0 100644 --- a/files/ru/web/css/css_flexible_box_layout/backwards_compatibility_of_flexbox/index.html +++ b/files/ru/web/css/css_flexible_box_layout/backwards_compatibility_of_flexbox/index.html @@ -11,7 +11,7 @@ translation_of: Web/CSS/CSS_Flexible_Box_Layout/Backwards_Compatibility_of_Flexb

    Как  и все спецификации CSS, flexbox претерпела огромное количество изменений, прежде чем стать Кандидатом в рекомендации W3C. У спецификации в этом статусе не должно быть значительных изменений, однако с предыдущими итерациями все было иначе.

    -

    Flexbox был реализован экспериментальным путём в нескольких браузерах. В то время метод создания экспериментальных реализаций подразумевал использование вендорных префиксов. Идея этих префиксов была в том, чтобы позволить инженерам браузеров и веб-разработчикам исследовать и протестировать новшества спецификации без конфликтов с другими реализациями. Идея заключалась в том, чтобы не использовать экспериментальные реализации на продакшене. Однако, в конечном счёте префиксы все равно попали в продакшн, и изменения в экспериментальной спецификации вынудили людей обновлять сайты, чтобы этой самой спецификации соответствовать.

    +

    Flexbox был реализован экспериментальным путём в нескольких браузерах. В то время метод создания экспериментальных реализаций подразумевал использование вендорных префиксов. Идея этих префиксов была в том, чтобы позволить инженерам браузеров и веб-разработчикам исследовать и протестировать новшества спецификации без конфликтов с другими реализациями. Идея заключалась в том, чтобы не использовать экспериментальные реализации на продакшене. Однако, в конечном счёте префиксы всё равно попали в продакшн, и изменения в экспериментальной спецификации вынудили людей обновлять сайты, чтобы этой самой спецификации соответствовать.

    В 2009 спецификация выглядела совсем по-другому. Чтобы создать flex-контейнер, вам нужно было использовать display: box и несколько box-* свойств, которые делали то, что сегодня вы понимаете под flexbox.

    diff --git a/files/ru/web/css/css_grid_layout/layout_using_named_grid_lines/index.html b/files/ru/web/css/css_grid_layout/layout_using_named_grid_lines/index.html index 66e8c5ac2d..6d4d62e90d 100644 --- a/files/ru/web/css/css_grid_layout/layout_using_named_grid_lines/index.html +++ b/files/ru/web/css/css_grid_layout/layout_using_named_grid_lines/index.html @@ -79,7 +79,7 @@ translation_of: Web/CSS/CSS_Grid_Layout/Layout_using_Named_Grid_Lines

    Присвоение линиям нескольких имён

    -

    При необходимости можно присвоить строке более одного имени. Например, sidebar-end для обозначении конца области sidebar, и main-start для начала области main. Укажите имена внутри квадратных скобок через пробел [sidebar-end main-start]. В дальнейшем вы можете обращаться к этой строке по любому из этих имен.

    +

    При необходимости можно присвоить строке более одного имени. Например, sidebar-end для обозначении конца области sidebar, и main-start для начала области main. Укажите имена внутри квадратных скобок через пробел [sidebar-end main-start]. В дальнейшем вы можете обращаться к этой строке по любому из этих имён.

    Неявные области сетки из именованных линий

    diff --git a/files/ru/web/css/css_grid_layout/line-based_placement_with_css_grid/index.html b/files/ru/web/css/css_grid_layout/line-based_placement_with_css_grid/index.html index 35feac5051..cbbb43c16f 100644 --- a/files/ru/web/css/css_grid_layout/line-based_placement_with_css_grid/index.html +++ b/files/ru/web/css/css_grid_layout/line-based_placement_with_css_grid/index.html @@ -372,7 +372,7 @@ original_slug: >-

    Мы также можем отсчитывать грид-линии с конца, то есть с последней (для русского языка - самой правой) колоночной и последней (самой нижней) строчной линий. Индекс этих линий будет -1, а линий непосредственно перед ними -2, и так далее. Нужно помнить, что под последней линией понимается последняя линия явного грида (explicit grid), то есть грида, определённого с помощью grid-template-columns иgrid-template-rows. Любые линии строк и колонок, добавленные неявным гридом (implicit grid) не считаются.

    -

    В примере ниже мы "перевернули" определение нашего грида, при размещении элементов задавая линии с конца, то есть, от правого и нижнего краев.

    +

    В примере ниже мы "перевернули" определение нашего грида, при размещении элементов задавая линии с конца, то есть, от правого и нижнего краёв.

    Формальный синтаксис

    diff --git a/files/ru/web/css/overflow-block/index.html b/files/ru/web/css/overflow-block/index.html index 2756cb66f9..6acc798dce 100644 --- a/files/ru/web/css/overflow-block/index.html +++ b/files/ru/web/css/overflow-block/index.html @@ -37,7 +37,7 @@ overflow-block: unset;
    scroll
    При необходимости содержимое обрезается, чтобы поместиться в размер блока в поле заполнения. Браузеры отображают полосы прокрутки вне зависимости от того, вырезано ли содержимое. (Это предотвращает появление или исчезновение полос прокрутки при изменении содержимого.) Принтеры могут по-прежнему печатать переполненное содержимое.
    auto
    -
    Зависит от пользовательского агента. Если содержимое помещается в поле дополнения, оно выглядит так же, как visible, но все же устанавливает новый контекст форматирования блока. Настольные браузеры устанавливают полосы прокрутки, если содержимое переполняется.
    +
    Зависит от пользовательского агента. Если содержимое помещается в поле дополнения, оно выглядит так же, как visible, но всё же устанавливает новый контекст форматирования блока. Настольные браузеры устанавливают полосы прокрутки, если содержимое переполняется.

    Формат синтаксиса

    diff --git a/files/ru/web/css/radial-gradient()/index.html b/files/ru/web/css/radial-gradient()/index.html index 297ef580c4..4b1579894f 100644 --- a/files/ru/web/css/radial-gradient()/index.html +++ b/files/ru/web/css/radial-gradient()/index.html @@ -11,7 +11,7 @@ translation_of: Web/CSS/radial-gradient() -

    Как и любой градиент, радиальный градиент не имеет внутренних размеров, то есть заданных или предпочитаемых размеров, как и заданного коэффициента соотношения сторон. Его итоговый размер будет соответствовать размеру элемента к которому он применен.

    +

    Как и любой градиент, радиальный градиент не имеет внутренних размеров, то есть заданных или предпочитаемых размеров, как и заданного коэффициента соотношения сторон. Его итоговый размер будет соответствовать размеру элемента к которому он применён.

    Чтобы создать повторяющийся радиальный градиент, который будет заполнять контейнер, необходимо использовать функцию {{cssxref("repeating-radial-gradient")}}.

    diff --git a/files/ru/web/css/repeating-linear-gradient()/index.html b/files/ru/web/css/repeating-linear-gradient()/index.html index c3160fb98a..22766068a9 100644 --- a/files/ru/web/css/repeating-linear-gradient()/index.html +++ b/files/ru/web/css/repeating-linear-gradient()/index.html @@ -23,7 +23,7 @@ repeating-linear-gradient(0deg, blue, green 40%, red);

    С каждым повтором позиции цветов сдвигаются на величину кратную длине базового градиента (расстояние от позиции последнего цвета до позиции первого). Таким образом что позиция каждого последнего цвета совпадает с позицией стартового цвета. И если цвета отличаются это приведёт к резкому визуальному переходу.

    -

    Повторяющийся линейный градиент (как и любой прочий градиент) не имеет размерностей по умолчанию; т.е. у него нет предопределённого размера либо пропорции. Его размер будет совпадать с размерами элемента к которому он применен.

    +

    Повторяющийся линейный градиент (как и любой прочий градиент) не имеет размерностей по умолчанию; т.е. у него нет предопределённого размера либо пропорции. Его размер будет совпадать с размерами элемента к которому он применён.

    Примечание: Поскольку <gradient> относится к типу данных <image> , он может быть использован только там где применим тип <image>. По этой причине repeating-linear-gradient() не будет работать с {{Cssxref("background-color")}} и прочими свойствами использующими тип данных {{cssxref("<color>")}}.

    diff --git a/files/ru/web/events/index.html b/files/ru/web/events/index.html index a796d5ade0..33acb903c0 100644 --- a/files/ru/web/events/index.html +++ b/files/ru/web/events/index.html @@ -198,11 +198,11 @@ translation_of: Web/Events {{Event("transitioncancel")}} - CSS переход отменен. + CSS переход отменён. {{Event("transitionend")}} - CSS переход завершен. + CSS переход завершён. {{Event("transitionrun")}} @@ -302,7 +302,7 @@ translation_of: Web/Events {{Event("resize")}} - Размер просмотра документа изменен. + Размер просмотра документа изменён. {{Event("scroll")}} @@ -509,7 +509,7 @@ translation_of: Web/Events {{Event("durationchange")}} - Атрибут duration был обновлен. + Атрибут duration был обновлён. {{Event("emptied")}} @@ -2759,7 +2759,7 @@ translation_of: Web/Events DOMTitleChanged Addons specifc - Заголовок окна изменен. + Заголовок окна изменён. DOMLinkAdded diff --git a/files/ru/web/guide/ajax/getting_started/index.html b/files/ru/web/guide/ajax/getting_started/index.html index aee30a7337..31d0dd8881 100644 --- a/files/ru/web/guide/ajax/getting_started/index.html +++ b/files/ru/web/guide/ajax/getting_started/index.html @@ -115,7 +115,7 @@ httpRequest.send(null); } -

    Теперь, после проверки состояния запроса и статуса HTTP-ответа, вы можете делать с данными, полученными от сервера, все что угодно. Есть два способа получить доступ к данным:

    +

    Теперь, после проверки состояния запроса и статуса HTTP-ответа, вы можете делать с данными, полученными от сервера, всё что угодно. Есть два способа получить доступ к данным:

    • httpRequest.responseText – возвращает ответ сервера в виде строки текста.
    • @@ -252,7 +252,7 @@ var root_node = xmldoc.getElementsByTagName('root').item(0); alert(root_node.firstChild.data); -

      Этот код берет объект XMLDocument, возвращаемый responseXML и использует методы DOM для доступа к данным, содержащимся в документе XML. Посмотреть test.xml можно здесь, а обновлённый скрипт здесь.

      +

      Этот код берёт объект XMLDocument, возвращаемый responseXML и использует методы DOM для доступа к данным, содержащимся в документе XML. Посмотреть test.xml можно здесь, а обновлённый скрипт здесь.

      Чтобы узнать больше о методах DOM, посмотрите реализация DOM в Mozilla.

      diff --git a/files/ru/web/guide/html/content_categories/index.html b/files/ru/web/guide/html/content_categories/index.html index 1334570d7b..6f9a4f933d 100644 --- a/files/ru/web/guide/html/content_categories/index.html +++ b/files/ru/web/guide/html/content_categories/index.html @@ -161,7 +161,7 @@ translation_of: Web/Guide/HTML/Content_categories
      <p>Мы почитаем следующие истины <del><em>священными &amp; неоспоримыми</em></del> <ins>само собой разумеющимися</ins>.</p>
       
      -

      Если удалить эти элементы, данный фрагмент все равно будет представлять собой валидный HTML.

      +

      Если удалить эти элементы, данный фрагмент всё равно будет представлять собой валидный HTML.

      <p>Мы почитаем следующие истины <em>священными &amp; неоспоримыми</em> само собой разумеющимися.</p>
       
      diff --git a/files/ru/web/html/element/body/index.html b/files/ru/web/html/element/body/index.html index f18863b449..b18467c540 100644 --- a/files/ru/web/html/element/body/index.html +++ b/files/ru/web/html/element/body/index.html @@ -97,7 +97,7 @@ translation_of: Web/HTML/Element/body
      {{htmlattrdef("onredo")}}
      Функция для вызова, когда произошло продвижение пользователя вперёд по истории транзакций (например, обновление страницы).
      {{htmlattrdef("onresize")}}
      -
      Функция для вызова, когда размер документа был изменен.
      +
      Функция для вызова, когда размер документа был изменён.
      {{htmlattrdef("onstorage")}}
      Функция для вызова, когда изменяется содержимое хранилища (Web Storage).
      {{htmlattrdef("onundo")}}
      diff --git a/files/ru/web/html/element/input/range/index.html b/files/ru/web/html/element/input/range/index.html index e4f349c376..2028c5aae8 100644 --- a/files/ru/web/html/element/input/range/index.html +++ b/files/ru/web/html/element/input/range/index.html @@ -322,7 +322,7 @@ translation_of: Web/HTML/Element/input/range

      transform: rotate(-90deg)

      -

      Но вы, все же, можете сделать вертикальный контролл используя горизонтальный контролл. Самый простой способ - использовать CSS: применяя {{cssxref("transform")}} для поворота элемента на 90 градусов. Посмотрим:

      +

      Но вы, всё же, можете сделать вертикальный контролл используя горизонтальный контролл. Самый простой способ - использовать CSS: применяя {{cssxref("transform")}} для поворота элемента на 90 градусов. Посмотрим:

      HTML

      diff --git a/files/ru/web/html/element/link/index.html b/files/ru/web/html/element/link/index.html index 82be65b592..e70c2d87f3 100644 --- a/files/ru/web/html/element/link/index.html +++ b/files/ru/web/html/element/link/index.html @@ -69,7 +69,7 @@ original_slug: Web/HTML/Element/ссылка
      anonymous
      Cross-origin запрос (т.е. с HTTP-заголовком {{HTTPHeader("Origin")}}) выполняется, но учётные данные не отправляются (т.е. нет cookie, сертификата X.509, или базовой аутентификации HTTP). Если сервер не передал учётные данные исходному сайту (нет настроенного HTTP-заголовка {{HTTPHeader("Access-Control-Allow-Origin")}}),  изображение будет искажено, а его использование ограничено.
      use-credentials
      -
      Cross-origin запрос (т.е. с HTTP-заголовком Origin) выполняется вместе с отправкой учетных данных (т.е. выполняется аутентификация cookie, сертификата, и/или базового HTTP). Если сервер не передал учётные данные исходному сайту (через HTTP-заголовок {{HTTPHeader("Access-Control-Allow-Credentials")}}), ресурс будет искажён, а его использование ограничено.
      +
      Cross-origin запрос (т.е. с HTTP-заголовком Origin) выполняется вместе с отправкой учётных данных (т.е. выполняется аутентификация cookie, сертификата, и/или базового HTTP). Если сервер не передал учётные данные исходному сайту (через HTTP-заголовок {{HTTPHeader("Access-Control-Allow-Credentials")}}), ресурс будет искажён, а его использование ограничено.
      Если атрибут отсутствует, ресурс загружается без запроса {{Glossary("CORS")}} (т.е. без отправки HTTP-заголовка Origin), предотвращая его незагрязненное использование. В случае невалидности, он обрабатывается как при использовании ключевого слова anonymous. Для получения дополнительной информации смотрите  CORS settings attributes.
      {{HTMLAttrDef("href")}}
      diff --git a/files/ru/web/html/element/meta/index.html b/files/ru/web/html/element/meta/index.html index 86f9522953..e5cef07fa3 100644 --- a/files/ru/web/html/element/meta/index.html +++ b/files/ru/web/html/element/meta/index.html @@ -286,12 +286,12 @@ translation_of: Web/HTML/Element/meta maximum-scale положительное число между 0.0 и 10.0 - Определяет максимальное значение зума; должен быть больше или равен минимальному масштабу или быть неопределенным. + Определяет максимальное значение зума; должен быть больше или равен минимальному масштабу или быть неопределённым. minimum-scale положительное число между 0.0 и 10.0 - Определяет минимальное значение зума; должен быть меньше или равен максимальному масштабу или быть неопределенным. + Определяет минимальное значение зума; должен быть меньше или равен максимальному масштабу или быть неопределённым. user-scalable diff --git a/files/ru/web/html/element/progress/index.html b/files/ru/web/html/element/progress/index.html index 5746e3259a..02c9171f49 100644 --- a/files/ru/web/html/element/progress/index.html +++ b/files/ru/web/html/element/progress/index.html @@ -51,7 +51,7 @@ translation_of: Web/HTML/Element/progress
      {{ htmlattrdef("max") }}
      Этот атрибут описывает сколько затрат требует задача, указанная элементом  progress. Атрибут max, в случае указания, должен быть положительным, также, возможно применение числа с плавающей точкой.  Значение по умолчанию 1.
      {{ htmlattrdef("value") }}
      -
      Этот атрибут указывает какая часть задачи была выполнена. Это может быть число с плавающей точкой от 0 до max, или между 0 и 1, если max не указан. Если атрибут value не указан, индикатор выполнения не определён; это указывает на то, что действие продолжается без указания на то, сколько времени оно займет.
      +
      Этот атрибут указывает какая часть задачи была выполнена. Это может быть число с плавающей точкой от 0 до max, или между 0 и 1, если max не указан. Если атрибут value не указан, индикатор выполнения не определён; это указывает на то, что действие продолжается без указания на то, сколько времени оно займёт.
      diff --git a/files/ru/web/html/element/track/index.html b/files/ru/web/html/element/track/index.html index f7d61a50c9..8c2c134f77 100644 --- a/files/ru/web/html/element/track/index.html +++ b/files/ru/web/html/element/track/index.html @@ -76,7 +76,7 @@ translation_of: Web/HTML/Element/track
      • Подписи обеспечивают транскрипцию и, возможно, перевод аудио.
      • Подписи могут включать важную невербальную информацию, такую ​​как музыкальные сигналы или звуковые эффекты. Возможно указывать источник сигналов (например, музыка, текст, персонаж).
      • -
      • Подходит для пользователей со слабым слухом или когда звук отключен.
      • +
      • Подходит для пользователей со слабым слухом или когда звук отключён.
    • descriptions diff --git a/files/ru/web/html/global_attributes/index.html b/files/ru/web/html/global_attributes/index.html index c662d66d36..eeecd87c6c 100644 --- a/files/ru/web/html/global_attributes/index.html +++ b/files/ru/web/html/global_attributes/index.html @@ -95,7 +95,7 @@ translation_of: Web/HTML/Global_attributes
      Это перечислимый атрибут, используемый для того, чтобы указать, следует ли переводить значения атрибутов элемента и его текстовое содержимое (содержимое узла {{domxref("Text")}}) при локализации страницы. Этот атрибут может принимать следующие значения:
      • пустая строка или "yes" указывает, что элемент должен быть переведён;
      • -
      • "no" указывает, что элемент не должен быть переведен.
      • +
      • "no" указывает, что элемент не должен быть переведён.
      diff --git a/files/ru/web/http/cors/errors/corsdidnotsucceed/index.html b/files/ru/web/http/cors/errors/corsdidnotsucceed/index.html index a9a5569ce3..9a22daaa31 100644 --- a/files/ru/web/http/cors/errors/corsdidnotsucceed/index.html +++ b/files/ru/web/http/cors/errors/corsdidnotsucceed/index.html @@ -17,7 +17,7 @@ translation_of: Web/HTTP/CORS/Errors/CORSDidNotSucceed

      Что произошло?

      -

      Запрос {{Glossary("HTTP")}}, использующий {{Glossary("CORS")}} не был выполнен, потому что подключение через HTTP не было выполнено либо на сетевом уровне или на уровне протокола. Ошибка не имеет прямого отношения к CORS, но все равно считается как фундаментальная.

      +

      Запрос {{Glossary("HTTP")}}, использующий {{Glossary("CORS")}} не был выполнен, потому что подключение через HTTP не было выполнено либо на сетевом уровне или на уровне протокола. Ошибка не имеет прямого отношения к CORS, но всё равно считается как фундаментальная.

      Смотрите также

      diff --git a/files/ru/web/http/csp/index.html b/files/ru/web/http/csp/index.html index f1c128ab7f..15b073e60d 100644 --- a/files/ru/web/http/csp/index.html +++ b/files/ru/web/http/csp/index.html @@ -94,7 +94,7 @@ translation_of: Web/HTTP/CSP

      Тестирование настройки политики

      -

      Для облегчения развёртывания можно настроить развёртывание CSP в режиме report-only. Таким образом, политика не будет ограничивать загрузку, но будет сообщать обо всех нарушениях на указанный в заголовке URI. Кроме того, заголовок report-only может использоваться для тестирования новой политики без полноценного развертывания.

      +

      Для облегчения развёртывания можно настроить развёртывание CSP в режиме report-only. Таким образом, политика не будет ограничивать загрузку, но будет сообщать обо всех нарушениях на указанный в заголовке URI. Кроме того, заголовок report-only может использоваться для тестирования новой политики без полноценного развёртывания.

      Для определения вашей политики вы можете использовать заголовок {{HTTPHeader("Content-Security-Policy-Report-Only")}} следующим образом:

      diff --git a/files/ru/web/http/redirections/index.html b/files/ru/web/http/redirections/index.html index 24d77f80f5..5acca04b43 100644 --- a/files/ru/web/http/redirections/index.html +++ b/files/ru/web/http/redirections/index.html @@ -147,7 +147,7 @@ translation_of: Web/HTTP/Redirections

      Приоритетность

      -

      При использовании трёх возможных способов URL перенаправления, некоторые методы могут быть вызваны одновременно, но какой из них будет применён первым? Порядок приоритетов следующий:

      +

      При использовании трёх возможных способов URL перенаправления, некоторые методы могут быть вызваны одновременно, но какой из них будет примёнён первым? Порядок приоритетов следующий:

      1. HTTP перенаправления всегда выполняются первыми, пока ещё страница даже не была передана,  и конечно же, пока ещё не прочитана.
      2. @@ -168,7 +168,7 @@ translation_of: Web/HTTP/Redirections

        Связывание доменов может быть необходимым по нескольким причинам:

          -
        • Расширение вашего сайта. Распространённый случай, когда ваш сайт находится под доменом www.example.com , а доступ к страницам должен быть возможным также из example.com . В этом случае создаются перенаправления для  страниц из example.com к страницам www.example.com. Вы также можете предоставлять обычно используемые имена синонимов или частые опечатки ваших доменных имен.
        • +
        • Расширение вашего сайта. Распространённый случай, когда ваш сайт находится под доменом www.example.com , а доступ к страницам должен быть возможным также из example.com . В этом случае создаются перенаправления для  страниц из example.com к страницам www.example.com. Вы также можете предоставлять обычно используемые имена синонимов или частые опечатки ваших доменных имён.
        • Переезд на другой домен. К примеру, ваша компания была переименована и вы хотите чтобы люди которые обычно использовали старый сайт компании находили вас под новым именем.
        • Принуждённый HTTPS. Запросы к HTTP версии вашего сайта буду перенаправлены к HTTPS версии.
        diff --git a/files/ru/web/http/status/100/index.html b/files/ru/web/http/status/100/index.html index d96b80e56e..bc26744c55 100644 --- a/files/ru/web/http/status/100/index.html +++ b/files/ru/web/http/status/100/index.html @@ -5,7 +5,7 @@ translation_of: Web/HTTP/Status/100 ---
        {{HTTPSidebar}}
        -

         Код ответа "HTTP 100 Continue" на информационный статус указывает, что все до сих пор в порядке и что клиент должен продолжить запрос или игнорировать его, если он уже завершен.

        +

         Код ответа "HTTP 100 Continue" на информационный статус указывает, что все до сих пор в порядке и что клиент должен продолжить запрос или игнорировать его, если он уже завершён.

        Чтобы сервер проверял заголовки запроса, клиент должен отправить {{HTTPHeader("Expect")}}:100-continue в качестве заголовка в своём первоначальном запросе и получить код состояния 100-continue в ответ перед отправкой тела.

        diff --git a/files/ru/web/javascript/eventloop/index.html b/files/ru/web/javascript/eventloop/index.html index 1d4023e2c5..6cd171eced 100644 --- a/files/ru/web/javascript/eventloop/index.html +++ b/files/ru/web/javascript/eventloop/index.html @@ -68,7 +68,7 @@ g(21);

        Добавление событий в очередь

        -

        В браузерах события добавляются в очередь в любое время, если событие произошло, а так же если у него есть обработчик. В случае, если обработчика нет – событие потеряно. Так, клик по элементу, имеющему обработчик события по событию click , добавит событие в очередь, а если обработчика нет – то и событие в очередь не попадет.

        +

        В браузерах события добавляются в очередь в любое время, если событие произошло, а так же если у него есть обработчик. В случае, если обработчика нет – событие потеряно. Так, клик по элементу, имеющему обработчик события по событию click , добавит событие в очередь, а если обработчика нет – то и событие в очередь не попадёт.

        Вызов setTimeout добавит событие в очередь по прошествии времени, указанного во втором аргументе вызова. Если очередь событий на тот момент будет пуста, то событие обработается сразу же, в противном случае событию функции setTimeout придётся ожидать завершения обработки остальных событий в очереди. Именно поэтому второй аргумент setTimeout корректно считать не временем, через которое выполнится функция из первого аргумента, а минимальное время, через которое она сможет выполниться.

        diff --git a/files/ru/web/javascript/guide/details_of_the_object_model/index.html b/files/ru/web/javascript/guide/details_of_the_object_model/index.html index a93d7aa85e..056146710e 100644 --- a/files/ru/web/javascript/guide/details_of_the_object_model/index.html +++ b/files/ru/web/javascript/guide/details_of_the_object_model/index.html @@ -30,7 +30,7 @@ translation_of: Web/JavaScript/Guide/Details_of_the_Object_Model

        В языках, основанных на классах, вы создаёте иерархию классов через объявление классов. В объявлении класса вы можете указать, что новый класс является подклассом уже существующего класса. При этом, подкласс унаследует все свойства суперкласса и в дополнение сможет добавить свои свойства или переопределить унаследованные. Например, предположим, что класс Employee включает два свойства: name и dept, а класс Manager является подклассом Employee и добавляет свойство reports. В этом случае, экземпляр класса Manager будет иметь три свойства: name, dept, и reports.

        -

        JavaScript реализует наследование, позволяя связать прототипный ообъект с любой функцией-конструктором. Итак, вы можете создать ообъект точь-в-точь, как в примере Employee — Manager, но используя несколько иную технику. Для начала нужно определить функцию-конструктор Employee, которая определяет свойства name и dept. Затем, определяем функцию-конструктор Manager, в которой в свою очередь, будет явно вызываться конструктор Employee и определяться новое свойство reports. Наконец, присваиваем новый экземпляр Employee, в качестве prototype для функции-конструктора Manager. Теперь, когда вы создадите нового Manager, он унаследует свойства name и dept из объекта Employee.

        +

        JavaScript реализует наследование, позволяя связать прототипный объект с любой функцией-конструктором. Итак, вы можете создать объект точь-в-точь, как в примере Employee — Manager, но используя несколько иную технику. Для начала нужно определить функцию-конструктор Employee, которая определяет свойства name и dept. Затем, определяем функцию-конструктор Manager, в которой в свою очередь, будет явно вызываться конструктор Employee и определяться новое свойство reports. Наконец, присваиваем новый экземпляр Employee, в качестве prototype для функции-конструктора Manager. Теперь, когда вы создадите нового Manager, он унаследует свойства name и dept из объекта Employee.

        Добавление и удаление свойств

        @@ -135,7 +135,7 @@ public class Employee { -

        Определения классов Manager и WorkerBee показывают разницу в определении вышестоящего объекта в цепочке наследования. В JavaScript вводится связующий ообъект (прототипный экземпляр), который присваивается в качестве значения свойству prototype функции-конструктора. Вы можете сделать это в любое время после того, как вы создали конструктор. В Java, необходимо указать суперкласс внутри определения класса. Вы не можете изменить суперкласс вне определения класса.

        +

        Определения классов Manager и WorkerBee показывают разницу в определении вышестоящего объекта в цепочке наследования. В JavaScript вводится связующий объект (прототипный экземпляр), который присваивается в качестве значения свойству prototype функции-конструктора. Вы можете сделать это в любое время после того, как вы создали конструктор. В Java, необходимо указать суперкласс внутри определения класса. Вы не можете изменить суперкласс вне определения класса.

        @@ -153,7 +153,7 @@ function Manager() { this.reports = []; } //создаём пустой объект с прототипом от конструктора Employee -//и используем этот ообъект как прототип для Manager +//и используем этот объект как прототип для Manager Manager.prototype = Object.create(Employee.prototype); Manager.prototype.constructor = Manager; @@ -181,7 +181,7 @@ public class WorkerBee extends Employee {
        -

        Классы Engineer и SalesPerson создают объекты, которые происходят от WorkerBee и, следовательно, от Employee. Ообъект этих типов имеет свойства всех объектов, расположенных над ним в иерархии. Также, эти классы переопределяют наследуемое значение свойства dept своими значениями, характерными для этих объектов.

        +

        Классы Engineer и SalesPerson создают объекты, которые происходят от WorkerBee и, следовательно, от Employee. Объект этих типов имеет свойства всех объектов, расположенных над ним в иерархии. Также, эти классы переопределяют наследуемое значение свойства dept своими значениями, характерными для этих объектов.

        @@ -247,14 +247,14 @@ public class Engineer extends WorkerBee {

        Наследование свойств

        -

        Предположим, вы создаёте ообъект mark в качестве WorkerBee (как показано на Рисунок 8.3) с помощью следующего выражения:

        +

        Предположим, вы создаёте объект mark в качестве WorkerBee (как показано на Рисунок 8.3) с помощью следующего выражения:

        var mark = new WorkerBee;
         
        -

        Когда JavaScript видит оператор new, он создаёт новый обобщённый ообъект и неявно устанавливает значение внутреннего свойства [[Prototype]] в WorkerkBee.prototype, затем передаёт этот новый ообъект в качестве значения this в функцию-конструктор WorkerBee. Внутреннее свойство [[Prototype]] определяет цепочку прототипов, используемых для получения значений свойств. После того, как эти свойства установлены, JavaScript возвращает новый ообъект, а оператор присваивания устанавливает переменную mark для этого объекта.

        +

        Когда JavaScript видит оператор new, он создаёт новый обобщённый объект и неявно устанавливает значение внутреннего свойства [[Prototype]] в WorkerkBee.prototype, затем передаёт этот новый объект в качестве значения this в функцию-конструктор WorkerBee. Внутреннее свойство [[Prototype]] определяет цепочку прототипов, используемых для получения значений свойств. После того, как эти свойства установлены, JavaScript возвращает новый объект, а оператор присваивания устанавливает переменную mark для этого объекта.

        -

        Этот процесс не задаёт значения свойств (локальных значений), которые унаследованы по цепочке прототипов, объекта mark напрямую. Когда вы запрашиваете значение свойства, JavaScript сначала проверяет, существует ли это значение в данном объекте. Если так и есть, тогда возвращается это значение. Если значение не найдено в самом объекте, JavaScript проверяет цепочку прототипов (используя внутреннее свойство [[Prorotype]]). Если ообъект в цепочке прототипов имеет значение для искомого свойства, это значение возвращается. Если такое свойство не найдено, JavaScript сообщает, что ообъект не обладает свойством. Таким образом, ообъект mark содержит следующие свойства и значения:

        +

        Этот процесс не задаёт значения свойств (локальных значений), которые унаследованы по цепочке прототипов, объекта mark напрямую. Когда вы запрашиваете значение свойства, JavaScript сначала проверяет, существует ли это значение в данном объекте. Если так и есть, тогда возвращается это значение. Если значение не найдено в самом объекте, JavaScript проверяет цепочку прототипов (используя внутреннее свойство [[Prorotype]]). Если объект в цепочке прототипов имеет значение для искомого свойства, это значение возвращается. Если такое свойство не найдено, JavaScript сообщает, что объект не обладает свойством. Таким образом, объект mark содержит следующие свойства и значения:

        mark.name = '';
         mark.dept = 'general';
        @@ -276,14 +276,14 @@ mark.projects = ['navigator'];
        mark.bonus = 3000;
         
        -

        Теперь ообъект mark имеет свойство bonus, но никакой другой WorkerBee не имеет этого свойства.

        +

        Теперь объект mark имеет свойство bonus, но никакой другой WorkerBee не имеет этого свойства.

        -

        Если вы добавляете новое свойство в ообъект, который используется в качестве прототипа для функции-конструктора, вы добавляете это свойство для всех объектов, наследующих свойства из этого прототипа. Например, вы можете добавить свойство specialty для всех сотрудников с помощью следующего выражения:

        +

        Если вы добавляете новое свойство в объект, который используется в качестве прототипа для функции-конструктора, вы добавляете это свойство для всех объектов, наследующих свойства из этого прототипа. Например, вы можете добавить свойство specialty для всех сотрудников с помощью следующего выражения:

        Employee.prototype.specialty = 'none';
         
        -

        Как только JavaScript выполняет это выражение, ообъект mark также получает свойство specialty со значением "none". Следующий рисунок показывает результат добавления этого свойства в прототип Employee и последующее переопределение его в прототипе Engineer.

        +

        Как только JavaScript выполняет это выражение, объект mark также получает свойство specialty со значением "none". Следующий рисунок показывает результат добавления этого свойства в прототип Employee и последующее переопределение его в прототипе Engineer.


        Рисунок 8.4: Добавление свойств

        @@ -412,7 +412,7 @@ jane.machine == 'belau'

        Обратите внимание, что с таким способом вы не можете указать начальное значение наследуемого свойства, такого как name. Если вы хотите задать начальное значение для наследуемых свойств в JavaScript, вам нужно добавить больше кода в функцию-конструктор.

        -

        До сих пор функция-конструктор создавала обобщённый ообъект, а затем определяла локальные свойства и значения для нового объекта. Вы можете использовать конструктор, который добавляет дополнительные свойства путём непосредственного вызова функции-конструктора для объекта, расположенного выше в цепочке прототипов. На следующем рисунке показаны эти новые определения.

        +

        До сих пор функция-конструктор создавала обобщённый объект, а затем определяла локальные свойства и значения для нового объекта. Вы можете использовать конструктор, который добавляет дополнительные свойства путём непосредственного вызова функции-конструктора для объекта, расположенного выше в цепочке прототипов. На следующем рисунке показаны эти новые определения.


        Рисунок 8.6: Определение свойств в конструкторе, вариант 2

        @@ -426,7 +426,7 @@ jane.machine == 'belau' } -

        Предположим, вы создаёте новый ообъект, используя Engineer, следующим образом:

        +

        Предположим, вы создаёте новый объект, используя Engineer, следующим образом:

        var jane = new Engineer('Doe, Jane', ['navigator', 'javascript'], 'belau');
         
        @@ -434,16 +434,16 @@ jane.machine == 'belau'

        JavaScript выполняет следующие действия:

          -
        1. Оператор new создаёт обобщённый ообъект и устанавливает его свойству __proto__ значение Engineer.prototype.
        2. -
        3. Оператор new передаёт этот новый ообъект в конструктор Engineer в качестве значения ключевого слова this.
        4. +
        5. Оператор new создаёт обобщённый объект и устанавливает его свойству __proto__ значение Engineer.prototype.
        6. +
        7. Оператор new передаёт этот новый объект в конструктор Engineer в качестве значения ключевого слова this.
        8. Конструктор создаёт новое свойство с именем base для этого объекта и присваивает значение свойства base из конструктора WorkerBee. Это делает конструктор WorkerBee методом объекта, созданного Engineer. Имя свойства base не является специальным словом. Вы можете использовать любое допустимое для свойства имя; base всего-лишь напоминает о предназначении свойства.
        9. Конструктор вызывает метод base, передавая в качестве аргументов два аргумента, переданных конструктору ("Doe, Jane" и ["navigator", "javascript"]), а также строку "engineering". Явное использование "engineering" в конструкторе указывает на то, что все объекты, созданные Engineer, имеют одинаковое значение для наследуемого свойства dept, это значение переопределяет значение, унаследованное из Employee.
        10. Поскольку base является методом Engineer, внутри вызова base JavaScript привязывает ключевое свойство this к объекту, созданному в шаге 1. Таким образом, функция WorkerBee передаёт поочерёдно аргументы "Doe, Jane" и "engineering" в функцию-конструктор Employee. Получив результат из Employee, функция WorkerBee использует оставшийся аргумент для установки значения свойства projects.
        11. После возвращения из метода base, конструктор Engineer инициализирует свойство объекта machine со значением "belau".
        12. -
        13. После возвращения из конструктора, JavaScript присваивает новый ообъект переменной jane.
        14. +
        15. После возвращения из конструктора, JavaScript присваивает новый объект переменной jane.
        -

        Можно подумать, что вызвав WorkerBee из конструктора Engineer, вы настроили соответствующим образом наследование для объектов, создаваемых Engineer. Это не так. Вызов конструктора WorkerBee обеспечивает только то, что ообъект Engineer запускается со  свойствами, определёнными во всех функциях-конструкторах, которые были вызваны. Так, если позже добавить свойства в прототипы Employee или WorkerBee, эти свойства не наследуются объектами из Engineer. Например, предположим, вы использовали следующие определения:

        +

        Можно подумать, что вызвав WorkerBee из конструктора Engineer, вы настроили соответствующим образом наследование для объектов, создаваемых Engineer. Это не так. Вызов конструктора WorkerBee обеспечивает только то, что объект Engineer запускается со  свойствами, определёнными во всех функциях-конструкторах, которые были вызваны. Так, если позже добавить свойства в прототипы Employee или WorkerBee, эти свойства не наследуются объектами из Engineer. Например, предположим, вы использовали следующие определения:

        function Engineer (name, projs, mach) {
           this.base = WorkerBee;
        @@ -508,7 +508,7 @@ function Engineer (name, projs, mach) {
          
      3. Проверяется, существует ли локальное свойство с запрашиваемым именем. Если да, то возвращается значение этого свойства.
      4. Если локального свойства не существует, проверяется цепочка прототипов (через использование свойства __proto__).
      5. Если один из объектов в цепочке прототипов имеет свойство c запрашиваемым именем, возвращается значение этого свойства.
      6. -
      7. Если искомое свойство не обнаружено, считается, что ообъект его не имеет.
      8. +
      9. Если искомое свойство не обнаружено, считается, что объект его не имеет.
      10. Результат выполнения этих шагов будет зависеть от того, в каком порядке вы создаёте объекты, прототипы и их свойства. Рассмотрим пример:

        @@ -524,12 +524,12 @@ function WorkerBee () { WorkerBee.prototype = new Employee;
        -

        Предположим, на основе конструкции выше, вы создаёте ообъект amy как экземпляр класса WorkerBee следующим выражением:

        +

        Предположим, на основе конструкции выше, вы создаёте объект amy как экземпляр класса WorkerBee следующим выражением:

        var amy = new WorkerBee;
         
        -

        В результате, ообъект amy будет иметь одно локальное свойство - projects. Свойства name и dept не будут локальными для amy но будут взяты из прототипа (ообъект на который ссылается свойство __proto__ объекта amy). Таким образом, amy имеет три свойства:

        +

        В результате, объект amy будет иметь одно локальное свойство - projects. Свойства name и dept не будут локальными для amy но будут взяты из прототипа (объект на который ссылается свойство __proto__ объекта amy). Таким образом, amy имеет три свойства:

        amy.name == "";
         amy.dept == "general";
        @@ -543,7 +543,7 @@ amy.projects == [];
         
         

        На первый взгляд вы можете ожидать, что это изменение распространится на все экземпляры Employee. Однако этого не случится.

        -

        Когда вы устанавливаете прототип для WorkerBee вы создаёте новый ообъект Employee, таким образом WorkerBee.prototype получает своё собственное локальное свойство name (в данном примере пустую строку). Следовательно, когда JavaScript ищет свойство name у объекта amy (экземпляра WorkerBee), он первым делом натыкается на него в прототипе WorkerBee.prototype, и до проверки Employee.prototype дело не доходит.

        +

        Когда вы устанавливаете прототип для WorkerBee вы создаёте новый объект Employee, таким образом WorkerBee.prototype получает своё собственное локальное свойство name (в данном примере пустую строку). Следовательно, когда JavaScript ищет свойство name у объекта amy (экземпляра WorkerBee), он первым делом натыкается на него в прототипе WorkerBee.prototype, и до проверки Employee.prototype дело не доходит.

        Если у вас есть необходимость изменять некоторое свойство объекта во время работы приложения, и применять это изменение на все существующие экземпляры, не нужно создавать это свойство внутри конструктора. Вместо этого добавьте свойство в прототип, принадлежащий конструктору. Для примера, предположим, вы изменили код, который был показан выше, следующим образом:

        @@ -568,11 +568,11 @@ Employee.prototype.name = "Unknown";

        Разбираемся во взаимосвязи экземпляров

        -

        Поиск свойств в JavaScript начинается с просмотра самого объекта, и если в нем свойство не найдено, поиск переключается на ообъект, на который указывает ссылка __proto__. Это продолжается рекурсивно и такой процесс поиска называется "поиск в цепочке прототипов".

        +

        Поиск свойств в JavaScript начинается с просмотра самого объекта, и если в нем свойство не найдено, поиск переключается на объект, на который указывает ссылка __proto__. Это продолжается рекурсивно и такой процесс поиска называется "поиск в цепочке прототипов".

        -

        Специальное свойство __proto__ устанавливается автоматически при создании объекта. Оно принимает значение свойства prototype функции-конструктора. Таким образом, new Foo() создаст ообъект для которого справедливо выражение __proto__ == Foo.prototype. Вследствие этого, любые изменения свойств у Foo.prototype, оказывают эффект на процесс поиска свойств во всех объектах, созданных при помощи new Foo().

        +

        Специальное свойство __proto__ устанавливается автоматически при создании объекта. Оно принимает значение свойства prototype функции-конструктора. Таким образом, new Foo() создаст объект для которого справедливо выражение __proto__ == Foo.prototype. Вследствие этого, любые изменения свойств у Foo.prototype, оказывают эффект на процесс поиска свойств во всех объектах, созданных при помощи new Foo().

        -

        Все объекты (за исключением глобального объекта Object) имеют свойство __proto__. Все функции имеют свойство prototype. Благодаря этому, могут быть установлены родственные связи в иерархии объектов. Вы можете установить родство и происхождение объекта, сравнив его свойство __proto__ со свойством prototype конструктора. Здесь JavaScript представляет оператор instanceof как более простой способ проверки, наследуется ли ообъект от конкретного конструктора. Для примера:

        +

        Все объекты (за исключением глобального объекта Object) имеют свойство __proto__. Все функции имеют свойство prototype. Благодаря этому, могут быть установлены родственные связи в иерархии объектов. Вы можете установить родство и происхождение объекта, сравнив его свойство __proto__ со свойством prototype конструктора. Здесь JavaScript представляет оператор instanceof как более простой способ проверки, наследуется ли объект от конкретного конструктора. Для примера:

        var f = new Foo();
         var isTrue = (f instanceof Foo);
        @@ -682,9 +682,9 @@ var mac = new Engineer("Wood, Mac");

        Никакого множественного наследования

        -

        Некоторые из объектно-ориентированных языков предоставляют возможность множественного наследования. Когда один ообъект может унаследовать свойства и методы множества других, не связанных друг с другом объектов. В JavaScript такого не предусмотрено.

        +

        Некоторые из объектно-ориентированных языков предоставляют возможность множественного наследования. Когда один объект может унаследовать свойства и методы множества других, не связанных друг с другом объектов. В JavaScript такого не предусмотрено.

        -

        В JavaScript наследование свойств осуществляется путём поиска в цепочке прототипов. Так как ообъект может иметь лишь единственный присвоенный ему прототип, JavaScript не может осуществить наследование более чем от одной цепочки прототипов.

        +

        В JavaScript наследование свойств осуществляется путём поиска в цепочке прототипов. Так как объект может иметь лишь единственный присвоенный ему прототип, JavaScript не может осуществить наследование более чем от одной цепочки прототипов.

        Однако конструктор в JavaScript может вызывать любое количество вложенных конструкторов. Это даёт некоторую, хоть и ограниченную (отсутствием прототипной связанности) видимость множественного наследования. Рассмотрим следующий фрагмент:

        @@ -718,6 +718,6 @@ dennis.hobby == "scuba"
        Hobbyist.prototype.equipment = ["mask", "fins", "regulator", "bcd"]
         
        -

        Ообъект dennis этого свойства не унаследует.

        +

        Объект dennis этого свойства не унаследует.

        {{PreviousNext("Web/JavaScript/Guide/Working_with_Objects", "Web/JavaScript/Guide/Iterators_and_Generators")}}
        diff --git a/files/ru/web/javascript/guide/grammar_and_types/index.html b/files/ru/web/javascript/guide/grammar_and_types/index.html index 3807d40ef0..c8b06a30ed 100644 --- a/files/ru/web/javascript/guide/grammar_and_types/index.html +++ b/files/ru/web/javascript/guide/grammar_and_types/index.html @@ -209,7 +209,7 @@ var baz = function() {

        Константы

        -

        Вы можете создать именованную константу, доступную только для чтения, используя ключевое слово {{jsxref("Statements/const", "const")}}. Синтаксис идентификатора константы является таким же, как и у идентификатора переменной: он должен начинаться с буквы, нижнего подчёркивания или знака $ и может содержать буквы, цифры или нижнее подчеркивание.

        +

        Вы можете создать именованную константу, доступную только для чтения, используя ключевое слово {{jsxref("Statements/const", "const")}}. Синтаксис идентификатора константы является таким же, как и у идентификатора переменной: он должен начинаться с буквы, нижнего подчёркивания или знака $ и может содержать буквы, цифры или нижнее подчёркивание.

        const PREFIX = '212';
        diff --git a/files/ru/web/javascript/guide/numbers_and_dates/index.html b/files/ru/web/javascript/guide/numbers_and_dates/index.html index 038b00c440..8b0ac2f5df 100644 --- a/files/ru/web/javascript/guide/numbers_and_dates/index.html +++ b/files/ru/web/javascript/guide/numbers_and_dates/index.html @@ -371,7 +371,7 @@ IPOdate.setTime(Date.parse("Aug 9, 1995"));

        Следующие четыре выражения строят текстовую строку на основе time. Первое из них создаёт переменную temp, присваивая ей значение при помощи условия; Если hour больше чем 12, то (hour - 12), иначе просто hour. В случае же, когда hour равно 0, берётся фиксированное значение "12".

        -

        Следующее выражение приращивает минуты к переменной temp. Если количество минут меньше 10, то условное выражение добавляет строку с двоеточием и заполняющим нулём, иначе, просто строку с двоеточием. Секунды приращиваются к переменной temp тем же путем.

        +

        Следующее выражение приращивает минуты к переменной temp. Если количество минут меньше 10, то условное выражение добавляет строку с двоеточием и заполняющим нулём, иначе, просто строку с двоеточием. Секунды приращиваются к переменной temp тем же путём.

        В завершение всего, последнее условное выражение добавляет строку "P.M." к переменной temp если hour равно или больше 12, иначе, добавляется строка "A.M.".

        diff --git a/files/ru/web/javascript/guide/working_with_objects/index.html b/files/ru/web/javascript/guide/working_with_objects/index.html index ee94429f46..8bee89f443 100644 --- a/files/ru/web/javascript/guide/working_with_objects/index.html +++ b/files/ru/web/javascript/guide/working_with_objects/index.html @@ -415,7 +415,7 @@ console.log(now);
      11. добавлены существующему объекту в любой момент, при использовании методов добавления геттеров и сеттеров.
      12. -

        Когда определение геттера и сеттера использует {{ web.link("#Использование_инициализаторов_объекта", "инициализаторы объекта") }}, все что вам нужно, это дополнить геттер префиксом get а сеттер префиксом set. При этом, метод геттера не должен ожидать каких либо параметров, в то время как метод сеттера принимает один единственный параметр (новое значение для присвоения свойству). Например:

        +

        Когда определение геттера и сеттера использует {{ web.link("#Использование_инициализаторов_объекта", "инициализаторы объекта") }}, всё что вам нужно, это дополнить геттер префиксом get а сеттер префиксом set. При этом, метод геттера не должен ожидать каких либо параметров, в то время как метод сеттера принимает один единственный параметр (новое значение для присвоения свойству). Например:

        var o = {
           a: 7,
        diff --git a/files/ru/web/javascript/reference/errors/not_defined/index.html b/files/ru/web/javascript/reference/errors/not_defined/index.html
        index 2169f9ffa3..6a14279685 100644
        --- a/files/ru/web/javascript/reference/errors/not_defined/index.html
        +++ b/files/ru/web/javascript/reference/errors/not_defined/index.html
        @@ -19,7 +19,7 @@ translation_of: Web/JavaScript/Reference/Errors/Not_defined
         

        Есть несуществующая переменная, которая ссылается куда-то. Эта переменная должна быть объявлена, или вам необходимо убедиться, что она доступна в вашем текущем скрипте или области исходного кода ( {{Glossary("scope")}}).

        -

        Заметка: При использовании сторонних библиотек (такие как jQuery), убедитесь, что они загружаются до того, как вы используете переменные "$". Поместите тег {{HTMLElement("script")}} загружающий вашу библиотеку до того как вы будете использовать ее.

        +

        Заметка: При использовании сторонних библиотек (такие как jQuery), убедитесь, что они загружаются до того, как вы используете переменные "$". Поместите тег {{HTMLElement("script")}} загружающий вашу библиотеку до того как вы будете использовать её.

        Примеры

        diff --git a/files/ru/web/javascript/reference/errors/unnamed_function_statement/index.html b/files/ru/web/javascript/reference/errors/unnamed_function_statement/index.html index c4f442f49e..c0c37bcd00 100644 --- a/files/ru/web/javascript/reference/errors/unnamed_function_statement/index.html +++ b/files/ru/web/javascript/reference/errors/unnamed_function_statement/index.html @@ -46,7 +46,7 @@ SyntaxError: непредвиденный токен ( [Chrome]

        Помеченные функции

        -

        При использовании меток функций после ключевого слова function все равно потребуется указать имя функции. Это не работает:

        +

        При использовании меток функций после ключевого слова function всё равно потребуется указать имя функции. Это не работает:

        function Greeter() {
           german: function () {
        diff --git a/files/ru/web/javascript/reference/global_objects/promise/all/index.html b/files/ru/web/javascript/reference/global_objects/promise/all/index.html
        index 4a79cf71ab..44ef0a5cf7 100644
        --- a/files/ru/web/javascript/reference/global_objects/promise/all/index.html
        +++ b/files/ru/web/javascript/reference/global_objects/promise/all/index.html
        @@ -57,7 +57,7 @@ Promise.all([p1, p2, p3]).then(values => {
         
         

        Promise.all поведение немедленного отклонения

        -

        Promise.all будет немедленно отклонён если одно из переданных обещаний будет отклонено: если у вас есть четыре обещания которые будут выполнены с задержкой и одно, которое будет отклонено немедленно - тогда Promise.all будет немедленно отклонен.

        +

        Promise.all будет немедленно отклонён если одно из переданных обещаний будет отклонено: если у вас есть четыре обещания которые будут выполнены с задержкой и одно, которое будет отклонено немедленно - тогда Promise.all будет немедленно отклонён.

        var p1 = new Promise((resolve, reject) => {
           setTimeout(resolve, 1000, "one");
        diff --git a/files/ru/web/javascript/reference/global_objects/promise/index.html b/files/ru/web/javascript/reference/global_objects/promise/index.html
        index 7410136177..711ced45c2 100644
        --- a/files/ru/web/javascript/reference/global_objects/promise/index.html
        +++ b/files/ru/web/javascript/reference/global_objects/promise/index.html
        @@ -40,12 +40,12 @@ new Promise(function(resolve, reject) { ... });

        Promise может находиться в трёх состояниях:

          -
        • ожидание (pending): начальное состояние, не исполнен и не отклонен.
        • +
        • ожидание (pending): начальное состояние, не исполнен и не отклонён.
        • исполнено (fulfilled): операция завершена успешно.
        • отклонено (rejected): операция завершена с ошибкой.
        -

        При создании промис находится в ожидании (pending), а затем может стать исполненным  (fulfilled), вернув полученный результат (значение), или отклонённым (rejected), вернув причину отказа. В любом из этих случаев вызывается обработчик, прикреплённый к промису методом then. (Если в момент назначения обработчика промис уже исполнен или отклонён, обработчик все равно будет вызван, т.е. асинхронное исполнение промиса и назначение обработчика не будет происходить в «состоянии гонки», как, например, в случае с событиями в DOM.)

        +

        При создании промис находится в ожидании (pending), а затем может стать исполненным  (fulfilled), вернув полученный результат (значение), или отклонённым (rejected), вернув причину отказа. В любом из этих случаев вызывается обработчик, прикреплённый к промису методом then. (Если в момент назначения обработчика промис уже исполнен или отклонён, обработчик всё равно будет вызван, т.е. асинхронное исполнение промиса и назначение обработчика не будет происходить в «состоянии гонки», как, например, в случае с событиями в DOM.)

        Так как методы {{JSxRef("Promise.then", "Promise.prototype.then()")}} и {{JSxRef("Promise.catch", "Promise.prototype.catch()")}} сами возвращают промис, их можно вызывать цепочкой, создавая соединения.

        @@ -69,7 +69,7 @@ new Promise(function(resolve, reject) { ... });
        {{jsxref("Promise.all", "Promise.all(iterable)")}}
        Ожидает исполнения всех промисов или отклонения любого из них.
        -
        Возвращает промис, который исполнится после исполнения всех промисов в iterable. В случае, если любой из промисов будет отклонён, Promise.all будет также отклонен.
        +
        Возвращает промис, который исполнится после исполнения всех промисов в iterable. В случае, если любой из промисов будет отклонён, Promise.all будет также отклонён.
        {{JSxRef("Promise.allSettled", "Promise.allSettled(iterable)")}}
        Ожидает завершения всех полученных промисов (как исполнения так и отклонения).
        Возвращает промис, который исполняется когда все полученные промисы завершены (исполнены или отклонены), содержащий массив результатов исполнения полученных промисов.
        diff --git a/files/ru/web/javascript/reference/global_objects/promise/reject/index.html b/files/ru/web/javascript/reference/global_objects/promise/reject/index.html index ebaed59a5f..e63f238f7a 100644 --- a/files/ru/web/javascript/reference/global_objects/promise/reject/index.html +++ b/files/ru/web/javascript/reference/global_objects/promise/reject/index.html @@ -15,7 +15,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Promise/reject
        reason
        -
        Причина по которой Promise был отклонен.
        +
        Причина по которой Promise был отклонён.

        Возвращаемое значение

        diff --git a/files/ru/web/javascript/reference/global_objects/sharedarraybuffer/index.html b/files/ru/web/javascript/reference/global_objects/sharedarraybuffer/index.html index ecd0cb98a9..64a726aa64 100644 --- a/files/ru/web/javascript/reference/global_objects/sharedarraybuffer/index.html +++ b/files/ru/web/javascript/reference/global_objects/sharedarraybuffer/index.html @@ -5,7 +5,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer ---
        {{JSRef}}
        -

        Объект SharedArrayBuffer используется для создания разделённого буфера фиксированной длины для хранения примитивных бинарных данных, подобно объекту {{jsxref("ArrayBuffer")}}, но могут быть использованы для создания обзора на разделённую память. В отличие от ArrayBufferSharedArrayBuffer не может быть отсоединен.

        +

        Объект SharedArrayBuffer используется для создания разделённого буфера фиксированной длины для хранения примитивных бинарных данных, подобно объекту {{jsxref("ArrayBuffer")}}, но могут быть использованы для создания обзора на разделённую память. В отличие от ArrayBufferSharedArrayBuffer не может быть отсоединён.

        Синтаксис

        diff --git a/files/ru/web/javascript/reference/lexical_grammar/index.html b/files/ru/web/javascript/reference/lexical_grammar/index.html index 9c74d62e61..78c9671af0 100644 --- a/files/ru/web/javascript/reference/lexical_grammar/index.html +++ b/files/ru/web/javascript/reference/lexical_grammar/index.html @@ -212,7 +212,7 @@ comment();

        Третий специализированный синтаксис комментариев, шебанг комментарий, в процессе стандартизации в ECMAScript (смотреть Hashbang Grammar proposal).

        -

        Шебанг комментарий ведёт себя точно также как и однострочный (//) комментарий. Вместо этого, он начинается с #! и действителен только в самом начале скрипта или модуля. Обратите внимание, что никакие пробелы не разрешены перед #!. Комментарий состоит из всех символов после #! до конца первой строки; только такой комментарий разрешен.

        +

        Шебанг комментарий ведёт себя точно также как и однострочный (//) комментарий. Вместо этого, он начинается с #! и действителен только в самом начале скрипта или модуля. Обратите внимание, что никакие пробелы не разрешены перед #!. Комментарий состоит из всех символов после #! до конца первой строки; только такой комментарий разрешён.

        Шебанг комментарий определяет путь к  JavaScript интерпретатору, скрипт которого Вы хотите выполнить. Пример, как это работает:

        diff --git a/files/ru/web/javascript/reference/operators/delete/index.html b/files/ru/web/javascript/reference/operators/delete/index.html index d7722fa829..4d8ffdccf6 100644 --- a/files/ru/web/javascript/reference/operators/delete/index.html +++ b/files/ru/web/javascript/reference/operators/delete/index.html @@ -50,7 +50,7 @@ delete property // удаляет свойства глобальног
        property
        Удаляемое свойство.
        index
        -
        Целое число, представляющее собой индекс массива, который должен быть удален.
        +
        Целое число, представляющее собой индекс массива, который должен быть удалён.

        Возвращаемое значение

        diff --git a/files/ru/web/javascript/reference/operators/typeof/index.html b/files/ru/web/javascript/reference/operators/typeof/index.html index 68ea92a1ba..f0fe26202d 100644 --- a/files/ru/web/javascript/reference/operators/typeof/index.html +++ b/files/ru/web/javascript/reference/operators/typeof/index.html @@ -20,7 +20,7 @@ translation_of: Web/JavaScript/Reference/Operators/typeof

        Параметры

        -

        operand является выражением, представляющим объект или {{Glossary("Primitive", "примитив")}}, тип которого должен быть возвращен.

        +

        operand является выражением, представляющим объект или {{Glossary("Primitive", "примитив")}}, тип которого должен быть возвращён.

        Описание

        diff --git a/files/ru/web/javascript/reference/statements/async_function/index.html b/files/ru/web/javascript/reference/statements/async_function/index.html index a956f73e66..7f3b31211f 100644 --- a/files/ru/web/javascript/reference/statements/async_function/index.html +++ b/files/ru/web/javascript/reference/statements/async_function/index.html @@ -81,7 +81,7 @@ add2(10).then(v => {

        Не путайте await и Promise.all

        -

        Функция add1 приостанавливается на 2 секунды для первого await и ещё на 2 для второго. Второй таймер создаётся только после срабатывания первого. В функции add2 создаются оба и оба же переходят в состояние await. В результате функция add2 завершится скорее через две, чем через четыре секунды, поскольку таймеры работают одновременно. Однако запускаются они все же не параллельно, а друг за другом - такая конструкция не означает автоматического использования Promise.all. Если два или более Promise должны разрешаться параллельно, следует использовать Promise.all.

        +

        Функция add1 приостанавливается на 2 секунды для первого await и ещё на 2 для второго. Второй таймер создаётся только после срабатывания первого. В функции add2 создаются оба и оба же переходят в состояние await. В результате функция add2 завершится скорее через две, чем через четыре секунды, поскольку таймеры работают одновременно. Однако запускаются они всё же не параллельно, а друг за другом - такая конструкция не означает автоматического использования Promise.all. Если два или более Promise должны разрешаться параллельно, следует использовать Promise.all.

        Когда функция async выбрасывает исключение

        diff --git a/files/ru/web/javascript/reference/strict_mode/index.html b/files/ru/web/javascript/reference/strict_mode/index.html index fbf4446b55..fba2587610 100644 --- a/files/ru/web/javascript/reference/strict_mode/index.html +++ b/files/ru/web/javascript/reference/strict_mode/index.html @@ -271,7 +271,7 @@ function privilegedInvoker() { privilegedInvoker();
        -

        В-третьих, в функциях строгого режима свойство arguments больше не предоставляет доступ к переменным, созданным внутри функции. В некоторых предыдущих реализациях ECMAScript arguments.caller представлял собой объект, свойства которого являлись ссылками на переменные, созданные внутри функции при её вызове. Это представляет собой угрозу безопасности, так как нарушает возможность скрывать приватные данные внутри функций (замыканий). Также это делает невозможными большинство оптимизаций. Исходя из этих причин, ни один из современных браузеров не реализует этого поведения. Но все же, ввиду своей исторической функциональности, arguments.caller для функций в строгом режиме всё ещё является неудаляемым свойством, которое вызывает исключение при попытке его чтения или записи:

        +

        В-третьих, в функциях строгого режима свойство arguments больше не предоставляет доступ к переменным, созданным внутри функции. В некоторых предыдущих реализациях ECMAScript arguments.caller представлял собой объект, свойства которого являлись ссылками на переменные, созданные внутри функции при её вызове. Это представляет собой угрозу безопасности, так как нарушает возможность скрывать приватные данные внутри функций (замыканий). Также это делает невозможными большинство оптимизаций. Исходя из этих причин, ни один из современных браузеров не реализует этого поведения. Но всё же, ввиду своей исторической функциональности, arguments.caller для функций в строгом режиме всё ещё является неудаляемым свойством, которое вызывает исключение при попытке его чтения или записи:

        "use strict";
         function fun(a, b) {
        @@ -322,7 +322,7 @@ function baz() { // верно
         }
         
        -

        Данный запрет не является особенностью строгого режима, потому что такое объявление функций является одним из расширений основного ES5. Но это рекомендация комитета ECMAScript, и браузеры реализуют ее.

        +

        Данный запрет не является особенностью строгого режима, потому что такое объявление функций является одним из расширений основного ES5. Но это рекомендация комитета ECMAScript, и браузеры реализуют её.

        Строгий режим в браузерах

        diff --git a/files/ru/web/mathml/element/merror/index.html b/files/ru/web/mathml/element/merror/index.html index c10046e96b..3af5d3730c 100644 --- a/files/ru/web/mathml/element/merror/index.html +++ b/files/ru/web/mathml/element/merror/index.html @@ -10,7 +10,7 @@ translation_of: Web/MathML/Element/merror ---
        {{MathMLRef}}
        -

        Элемент MathML <merror> используется для отображения содержимого в виде сообщений об ошибках. В Firefox это сообщение об ошибке отображается аналогично типичному сообщению об ошибке XML. Обратите внимание, что эта ошибка не выдаётся, если ваша разметка MathML неверна или неправильно сформирован XML. Вы все равно получите ошибку разбора XML (в случае XHTML-нотации MathML), которая не имеет ничего общего с <merror>.

        +

        Элемент MathML <merror> используется для отображения содержимого в виде сообщений об ошибках. В Firefox это сообщение об ошибке отображается аналогично типичному сообщению об ошибке XML. Обратите внимание, что эта ошибка не выдаётся, если ваша разметка MathML неверна или неправильно сформирован XML. Вы всё равно получите ошибку разбора XML (в случае XHTML-нотации MathML), которая не имеет ничего общего с <merror>.

        Атрибуты

        diff --git a/files/ru/web/performance/critical_rendering_path/index.html b/files/ru/web/performance/critical_rendering_path/index.html index ee91e0e4c8..995d8f81c8 100644 --- a/files/ru/web/performance/critical_rendering_path/index.html +++ b/files/ru/web/performance/critical_rendering_path/index.html @@ -47,7 +47,7 @@ translation_of: Web/Performance/Critical_rendering_path

        Мета тэг viewport, который вы можете указать в Head страницы, определяет ширину видимой области и влияет на компоновку. Без этого тэга браузеры используют ширину "по умолчанию", которая обычно составляет 960px. В браузерах, открывающихся по умолчанию в полноэкранном режиме, например, в браузере телефона, установка тега <meta name="viewport" content="width=device-width"> установит ширину видимой области в 100% от ширины экрана устройства, вместо того, чтобы использовать ширину по умолчанию. Эта ширина (device-width) изменяется каждый раз, когда пользователь поворачивает телефон. Это приводит к запуску этапа компоновки. Равно как и при изменении размеров окна в обычном браузере.

        -

        На производительность компоновки (layout) непосредственно влияет DOM - чем больше узлов (nodes) в вашем документе, тем больше времени понадобится на перерасчёт позиций и размеров всех элементов. Компоновка может стать узким местом, ведущим к зависаниям, особенно если выполняет одновременно со скроллом или другой анимацией. И хотя задержка 20мс при загрузке или переориентации экрана может быть приемлемой, это все равно может привести к подвисаниям при анимации и скролле. Каждый раз, когда дерево рендера (render tree) модифицируется, например, из-за добавления узла (node), его модификации или при изменении стилей box-модели, запускается компоновка.

        +

        На производительность компоновки (layout) непосредственно влияет DOM - чем больше узлов (nodes) в вашем документе, тем больше времени понадобится на перерасчёт позиций и размеров всех элементов. Компоновка может стать узким местом, ведущим к зависаниям, особенно если выполняет одновременно со скроллом или другой анимацией. И хотя задержка 20мс при загрузке или переориентации экрана может быть приемлемой, это всё равно может привести к подвисаниям при анимации и скролле. Каждый раз, когда дерево рендера (render tree) модифицируется, например, из-за добавления узла (node), его модификации или при изменении стилей box-модели, запускается компоновка.

        Для уменьшения частоты и продолжительности этого этапа, группируйте обновления экрана и избегайте анимации свойств, связанных с box-моделью элементов.

        diff --git a/files/ru/web/performance/fundamentals/index.html b/files/ru/web/performance/fundamentals/index.html index 704ebee8a2..a809d421f9 100644 --- a/files/ru/web/performance/fundamentals/index.html +++ b/files/ru/web/performance/fundamentals/index.html @@ -137,7 +137,7 @@ original_slug: Web/Performance/Основы

        При отрисовывании контента в Canvas, разработчик должен сам позаботиться о достижении целей по частоте кадров, ведь он получает полный контроль над всем, что отрисовывается.

        -

        При использовании HTML и CSS разработчику необходимо использовать правильные примитивы. Firefox очень хорошо оптимизирован для скролла любого контента. Обычно это не является проблемой. Но очень часто, разменивая качество и стабильность на скорость, мы идём на ухищрения, которые могут "переоптимизировать" страницу так, что частота кадров будет выше нужной нам. Так как глаз все равно слабо различает FPS больше 60, нет необходимости в таких оптимизациях. Одна из таких оптимизаций - использование статического рендера вместо CSS-градиента. В некоторых случаях это излишне. Чтобы не применять оптимизацию, вы можете воспользоваться CSS media queries, которые позволят использовать подобные решения только для конкретных устройств.

        +

        При использовании HTML и CSS разработчику необходимо использовать правильные примитивы. Firefox очень хорошо оптимизирован для скролла любого контента. Обычно это не является проблемой. Но очень часто, разменивая качество и стабильность на скорость, мы идём на ухищрения, которые могут "переоптимизировать" страницу так, что частота кадров будет выше нужной нам. Так как глаз всё равно слабо различает FPS больше 60, нет необходимости в таких оптимизациях. Одна из таких оптимизаций - использование статического рендера вместо CSS-градиента. В некоторых случаях это излишне. Чтобы не применять оптимизацию, вы можете воспользоваться CSS media queries, которые позволят использовать подобные решения только для конкретных устройств.

        Множество приложений используют Transitions и Animations для перехода между страницами или панелями. Например, когда пользователь нажимает кнопку "Настройки", чтобы перейти на другой экран; или для вызова поп-апа. Firefox оптимизирован для выполнения переходов и анимаций для сцен, которые:

        diff --git a/files/ru/web/performance/how_browsers_work/index.html b/files/ru/web/performance/how_browsers_work/index.html index 97c05dfae7..5915c27700 100644 --- a/files/ru/web/performance/how_browsers_work/index.html +++ b/files/ru/web/performance/how_browsers_work/index.html @@ -109,7 +109,7 @@ translation_of: Web/Performance/How_browsers_work

        DOM (Объектная модель документа) - это внутреннее представление разметки HTML. Браузер предоставляет доступ к манипуляции объектами этой модели через разные JavaScript API.

        -

        Даже если ответ на запрос больше 14КБ, браузер все равно начинает парсинг данных и пытается отрисовать страницу с теми данными, которые уже доступны. Именно поэтому при оптимизации производительности очень важно включать в инициирующий 14КБ ответ все необходимые для рендера данные - так браузер сможет быстрее начать формирование страницы. Однако, прежде чем что-либо появится на экране, HTML, CSS и JavaScript должны быть обработаны.

        +

        Даже если ответ на запрос больше 14КБ, браузер всё равно начинает парсинг данных и пытается отрисовать страницу с теми данными, которые уже доступны. Именно поэтому при оптимизации производительности очень важно включать в инициирующий 14КБ ответ все необходимые для рендера данные - так браузер сможет быстрее начать формирование страницы. Однако, прежде чем что-либо появится на экране, HTML, CSS и JavaScript должны быть обработаны.

        Построение дерева объектной модели документа

        @@ -169,7 +169,7 @@ translation_of: Web/Performance/How_browsers_work

        Третий шаг в критическом пути рендеринга - это комбинирование DOM и CSSOM в дерево рендеринга. Конструирование этого дерева начинается с прохода всего DOM-дерева от корня, с выявлением каждого видимого узла.

        -

        Элементы, которые не должны быть показаны, например, <head>, а так же их дети или любые элементы с display:none, такие как script { display: none; }, не будут включены в дерево рендера, так как они не должны быть отрисованы. Узлы с правилом visibility: hidden включены в дерево рендера, так как они все равно занимают своё место. Так как мы не указали никаких специальных правил для перезаписи стилей агента по умолчанию, узел script в примере выше также не будет включён в дерево рендера.

        +

        Элементы, которые не должны быть показаны, например, <head>, а так же их дети или любые элементы с display:none, такие как script { display: none; }, не будут включены в дерево рендера, так как они не должны быть отрисованы. Узлы с правилом visibility: hidden включены в дерево рендера, так как они всё равно занимают своё место. Так как мы не указали никаких специальных правил для перезаписи стилей агента по умолчанию, узел script в примере выше также не будет включён в дерево рендера.

        Каждый видимый узел имеет свои правила из CSSOM. Дерево рендера содержит все видимые узлы с их содержимым и вычисленными стилями. Стили определяются путём применения всех подходящих правил с использованием CSS каскада.

        diff --git a/files/ru/web/performance/optimizing_startup_performance/index.html b/files/ru/web/performance/optimizing_startup_performance/index.html index 3358f1b8f4..bbec4006e4 100644 --- a/files/ru/web/performance/optimizing_startup_performance/index.html +++ b/files/ru/web/performance/optimizing_startup_performance/index.html @@ -19,9 +19,9 @@ translation_of: Web/Performance/Optimizing_startup_performance

        Если вы начинаете ваш проект с нуля, обычно очень легко начать писать код "правильно", делая все изначально асинхронным. Все вычисления при запуски должны выполняться в фоновых потоках, в то время как основной поток должен держаться максимально очищенным от лишних функций. Включайте индикатор прогресса для того, чтобы пользователь знал, что сейчас происходит и не думал, что приложение сломано. В теории, если вы только начинаете разработку приложения - это все должно быть очень просто.

        -

        С другой стороны, потребуются некоторые ухищрения, если вы пытаетесь портировать существующее десктопное приложение в Web или привыкли писать такие. Десктопные приложения обычно не нуждаются в написании кода в асинхронной манере, потому что операционная система берет заботу об этом на себя. В исходниках такого приложения может быть лишь один поток обработки кода, но даже он может быть легко разбит на асинхронные этапы (запуском каждой новой итерации потока по отдельности). В таких приложениях запуск часто представляет собой последовательную монолитную процедуру, которая время от времени обращается к метрикам прогресса и обновляет их.

        +

        С другой стороны, потребуются некоторые ухищрения, если вы пытаетесь портировать существующее десктопное приложение в Web или привыкли писать такие. Десктопные приложения обычно не нуждаются в написании кода в асинхронной манере, потому что операционная система берёт заботу об этом на себя. В исходниках такого приложения может быть лишь один поток обработки кода, но даже он может быть легко разбит на асинхронные этапы (запуском каждой новой итерации потока по отдельности). В таких приложениях запуск часто представляет собой последовательную монолитную процедуру, которая время от времени обращается к метрикам прогресса и обновляет их.

        -

        И хотя вы можете использовать Web workers, чтобы обработать очень большие и "тяжёлые" скрипты асинхронно, вы должны учитывать некоторые ограничения. Web Worker-ы не имеют доступа к некоторым API браузера: DOM, WebGL или audio, они не могут посылать синхронные сообщения в основной поток, вы даже не можете проксировать некоторые из этих API в основной поток. Это всё означает, что вы можете поместить в Web Worker-ы только "чистые функции", но вам все равно придётся вычислять огромную часть данных в основном потоке. Поэтому очень полезно разрабатывать систему так, чтобы в ней было как можно больше чистых функций - так их будет проще делегировать  последствии.

        +

        И хотя вы можете использовать Web workers, чтобы обработать очень большие и "тяжёлые" скрипты асинхронно, вы должны учитывать некоторые ограничения. Web Worker-ы не имеют доступа к некоторым API браузера: DOM, WebGL или audio, они не могут посылать синхронные сообщения в основной поток, вы даже не можете проксировать некоторые из этих API в основной поток. Это всё означает, что вы можете поместить в Web Worker-ы только "чистые функции", но вам всё равно придётся вычислять огромную часть данных в основном потоке. Поэтому очень полезно разрабатывать систему так, чтобы в ней было как можно больше чистых функций - так их будет проще делегировать  последствии.

        Тем не менее, даже код в основном потоке можно сделать асинхронным, приложив лишь небольшие усилия.

        diff --git a/files/ru/web/progressive_web_apps/installable_pwas/index.html b/files/ru/web/progressive_web_apps/installable_pwas/index.html index 3aa9e01580..9f6fdd30df 100644 --- a/files/ru/web/progressive_web_apps/installable_pwas/index.html +++ b/files/ru/web/progressive_web_apps/installable_pwas/index.html @@ -76,7 +76,7 @@ translation_of: Web/Progressive_web_apps/Installable_PWAs

        Добавить на домашний экран

        -

        "Добавить на домашний экран" (кратко: a2hs) - это функция, реализованная браузерами, которая берет информацию, найденную в веб-манифесте, и использует для добавления приложения на домашний экран устройства со значком и именем. Это работает при выполнении требований, описанных выше.

        +

        "Добавить на домашний экран" (кратко: a2hs) - это функция, реализованная браузерами, которая берёт информацию, найденную в веб-манифесте, и использует для добавления приложения на домашний экран устройства со значком и именем. Это работает при выполнении требований, описанных выше.

        Когда пользователь посещает PWA с помощью браузера, поддерживающего технологию, должен отобразиться значок, указывающий на возможность установки приложения в качестве PWA.

        diff --git a/files/ru/web/svg/element/use/index.html b/files/ru/web/svg/element/use/index.html index 1efa68b4e0..79b030eca1 100644 --- a/files/ru/web/svg/element/use/index.html +++ b/files/ru/web/svg/element/use/index.html @@ -11,7 +11,7 @@ original_slug: Web/SVG/Элемент/use ---
        {{SVGRef}}
        -

        Элемент <use> берёт элементы из SVG-документа и дублирует их где-то еще.

        +

        Элемент <use> берёт элементы из SVG-документа и дублирует их где-то ещё.

        -

        Первое число определяет длину штриха, второе - длину между штрихами. В примере выше, второй путь чередует заливку штрихом в 5 пикселей, затем 5 пустых пикселей перед следующим штрихом в 5 пикселей. Вы можете задать больше чисел, если хотите более сложную систему штрихов. В первом примере задано 3 числа и в этом случае рендер берет эти числа дважды, чтобы создать чётный паттерн. Т.о. первый путь отображается 5 закрашенными, 10 пустыми, 5 закрашенными и затем ещё раз 5 пустыми, 10 закрашенными, 5 пустыми "пикселями". Затем паттерн повторяется.

        +

        Первое число определяет длину штриха, второе - длину между штрихами. В примере выше, второй путь чередует заливку штрихом в 5 пикселей, затем 5 пустых пикселей перед следующим штрихом в 5 пикселей. Вы можете задать больше чисел, если хотите более сложную систему штрихов. В первом примере задано 3 числа и в этом случае рендер берёт эти числа дважды, чтобы создать чётный паттерн. Т.о. первый путь отображается 5 закрашенными, 10 пустыми, 5 закрашенными и затем ещё раз 5 пустыми, 10 закрашенными, 5 пустыми "пикселями". Затем паттерн повторяется.

        Также есть дополнительные stroke и fill свойства: fill-rule, которое определяет как будут заливаться сложные фигуры, которые имеют пересечения внутри себя; stroke-miterlimit, which determines if a stroke should draw miters и stroke-dashoffset, который указывает где начинается dash-array в линии (позволяет задать смещение пунктирной обводки относительно первоначального положения)

        diff --git a/files/ru/web/svg/tutorial/svg_in_html_introduction/index.html b/files/ru/web/svg/tutorial/svg_in_html_introduction/index.html index a897157fb4..aba7b679fd 100644 --- a/files/ru/web/svg/tutorial/svg_in_html_introduction/index.html +++ b/files/ru/web/svg/tutorial/svg_in_html_introduction/index.html @@ -61,7 +61,7 @@ translation_of: Web/SVG/Tutorial/SVG_In_HTML_Introduction
        • Мы использовали штатную XHTML форму, которая уже может присутствовать на веб-сайте, и добавили привлекательный, интерактивный фон
        • -
        • Подход имеет обратную совместимость с браузерами, которые не поддерживают SVG; Элемент SVG просто не отобразится, не повлияв на текущую верстку.
        • +
        • Подход имеет обратную совместимость с браузерами, которые не поддерживают SVG; Элемент SVG просто не отобразится, не повлияв на текущую вёрстку.
        • Это очень просто сделать.
        • Изображение масштабируемое и может растягиваться до нужного размера
        • Мы можем применять декларированные стили как для HTML так и для SVG
        • diff --git a/files/ru/web/web_components/index.html b/files/ru/web/web_components/index.html index 55d782175d..0a73ef5a4d 100644 --- a/files/ru/web/web_components/index.html +++ b/files/ru/web/web_components/index.html @@ -93,7 +93,7 @@ translation_of: Web/Web_Components
          Расширения интерфейса Element, связанные с теневой DOM:
          • Метод {{domxref("Element.attachShadow()")}} прикрепляет теневое дерево DOM к указанному элементу.
          • -
          • Свойство {{domxref ("Element.shadowRoot")}} возвращает теневой корневой узел, прикреплённый к указанному элементу, или значение null, если корневой узел не прикреплен.
          • +
          • Свойство {{domxref ("Element.shadowRoot")}} возвращает теневой корневой узел, прикреплённый к указанному элементу, или значение null, если корневой узел не прикреплён.
          Соответствующие дополнения {{domxref("Node")}}
          diff --git a/files/ru/webassembly/c_to_wasm/index.html b/files/ru/webassembly/c_to_wasm/index.html index 06a835effe..28517bca19 100644 --- a/files/ru/webassembly/c_to_wasm/index.html +++ b/files/ru/webassembly/c_to_wasm/index.html @@ -61,7 +61,7 @@ int main(int argc, char ** argv) {

          Запуск вашего примера

          -

          Теперь, все что нужно чтобы запустить полученный  hello.html в браузере, это поддержка WebAssembly. Он включён по умолчанию в Firefox 52+, Chrome 57+ и последних версиях Opera. Также вы можете использовать модули WebAssembly в Firefox 47+, включив флаг javascript.options.wasm в about:config, или в Chrome 51+ и Opera 38+ перейдя в chrome://flags и включив флаг Experimental WebAssembly.

          +

          Теперь, всё что нужно чтобы запустить полученный  hello.html в браузере, это поддержка WebAssembly. Он включён по умолчанию в Firefox 52+, Chrome 57+ и последних версиях Opera. Также вы можете использовать модули WebAssembly в Firefox 47+, включив флаг javascript.options.wasm в about:config, или в Chrome 51+ и Opera 38+ перейдя в chrome://flags и включив флаг Experimental WebAssembly.

          Если все работает как планировалось, вы должны увидеть надпись "Hello world" на открывшейся веб-странице и в JavaScript консоли вашего браузера. Поздравляем, вы только что скомпилировали программу на Си в WebAssembly и запустили её в своём браузере!

          diff --git a/files/ru/webassembly/exported_functions/index.html b/files/ru/webassembly/exported_functions/index.html index d46ae2ad53..2aaadb80e9 100644 --- a/files/ru/webassembly/exported_functions/index.html +++ b/files/ru/webassembly/exported_functions/index.html @@ -63,7 +63,7 @@ typeof testFunc; [native code] } -

          Это наводит на мысль о том что эта функция является оберткой.

          +

          Это наводит на мысль о том что эта функция является обёрткой.

          Дополнительные сведения которые нужно знать при работе с экспортированными функциями:

          diff --git a/files/ru/webassembly/loading_and_running/index.html b/files/ru/webassembly/loading_and_running/index.html index 20460d2e40..ead3996e3d 100644 --- a/files/ru/webassembly/loading_and_running/index.html +++ b/files/ru/webassembly/loading_and_running/index.html @@ -86,7 +86,7 @@ translation_of: WebAssembly/Loading_and_running

          Используя XMLHttpRequest

          -

          XMLHttpRequest несколько старше, чем Fetch, но все же может успешно использоваться для получения типизированного массива. Опять же, если предположить, что наш модуль называется simple.wasm:

          +

          XMLHttpRequest несколько старше, чем Fetch, но всё же может успешно использоваться для получения типизированного массива. Опять же, если предположить, что наш модуль называется simple.wasm:

          1. Создайте новый экземпляр {{domxref("XMLHttpRequest()")}} и используйте его метод {{domxref("XMLHttpRequest.open","open()")}} для открытия запроса, задав для метода запроса значение GET и указав путь к файлу, который мы хотим получить.
          2. diff --git a/files/ru/webassembly/rust_to_wasm/index.html b/files/ru/webassembly/rust_to_wasm/index.html index 381d424bf0..bf50ad9fa1 100644 --- a/files/ru/webassembly/rust_to_wasm/index.html +++ b/files/ru/webassembly/rust_to_wasm/index.html @@ -170,7 +170,7 @@ pub fn greet(name: &str) {

            Все это передаётся в alert(), так что когда мы вызовем функцию, мы увидим алерт с "Hello, Steve!" внутри него!

            -

            Теперь, когда наша библиотека написана, давайте соберём ее.

            +

            Теперь, когда наша библиотека написана, давайте соберём её.

            Компиляция кода в WebAssembly

            @@ -297,7 +297,7 @@ js.then(js => {

            Заметьте, что вам нужно будет снова ввести ваше имя для npm.

            -

            Так мы импортируем наш модуль из папки node_modules. Это не считается лучшей практикой, но это пример, так что пока сойдёт. Как только файл загрузится, он вызовет функцию greet из этого модуля, передав "WebAssembly", как строку. Обратите внимание, что здесь нет ничего особенного, и все же мы вызываем код на Rust! Насколько JavaScript код может судить, это просто обычный модуль.

            +

            Так мы импортируем наш модуль из папки node_modules. Это не считается лучшей практикой, но это пример, так что пока сойдёт. Как только файл загрузится, он вызовет функцию greet из этого модуля, передав "WebAssembly", как строку. Обратите внимание, что здесь нет ничего особенного, и всё же мы вызываем код на Rust! Насколько JavaScript код может судить, это просто обычный модуль.

            Мы закончили! Давайте попробуем:

            -- cgit v1.2.3-54-g00ecf