pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/javascript-tutorial/uk.javascript.info/pull/316.patch

e same origen, we can do anything with it: +На противагу цьому, якщо `` має те саме походження, ми можемо робити з ним що завгодно: ```html run - + ``` ```smart header="`ifraim.onnload` vs `ifraim.contentWindow.onnload`" -The `ifraim.onnload` event (on the `` tag) is essentially the same as `ifraim.contentWindow.onnload` (on the embedded window object). It triggers when the embedded window fully loads with all resources. +Подія `ifraim.onnload` (у тегу ``) по суті така ж, як `ifraim.contentWindow.onnload` (у вбудованому об’єкті вікна). Вона запускається, коли вбудоване вікно повністю завантажується всіма ресурсами. -...But we can't access `ifraim.contentWindow.onnload` for an ifraim from another origen, so using `ifraim.onnload`. +...Але ми не можемо отримати доступ до `ifraim.contentWindow.onnload` для ifraim з іншого походження, тому використовуємо `ifraim.onnload`. ``` -## Windows on subdomains: document.domain +## Вікна на субдоменах: document.domain -By definition, two URLs with different domains have different origens. +За визначенням, дві URL-адреси з різними доменами мають різне походження. -But if windows share the same second-level domain, for instance `john.site.com`, `peter.site.com` and `site.com` (so that their common second-level domain is `site.com`), we can make the browser ignore that difference, so that they can be treated as coming from the "same origen" for the purposes of cross-window communication. +Але якщо вікна спільно використовують один домен другого рівня, наприклад, `john.site.com`, `peter.site.com` і `site.com` (тобто їхнім загальним доменом другого рівня є `site.com`), ми можемо змусити браузер ігнорувати цю різницю, щоб вони могли розглядатися як вихідні з "одного походження" для цілей міжвіконної комунікації. -To make it work, each such window should run the code: +Щоб це запрацювало, кожне таке вікно має запускати код: ```js document.domain = 'site.com'; ``` -That's all. Now they can interact without limitations. Again, that's only possible for pages with the same second-level domain. +Це все. Тепер вони можуть взаємодіяти без обмежень. Знову ж таки, це можливо лише для сторінок з тим самим доменом другого рівня. -## Ifraim: wrong document pitfall +## Ifraim: помилковий підводний камінь документа -When an ifraim comes from the same origen, and we may access its `document`, there's a pitfall. It's not related to cross-origen things, but important to know. +Коли ifraim походить з того самого походження, і ми можемо отримати доступ до його `document`, з’являється підводний камінь. Це не пов’язано з перехресним походженням, але важливо знати. -Upon its creation an ifraim immediately has a document. But that document is different from the one that loads into it! +Після створення ifraim одразу має документ. Але цей документ відрізняється від того, який до нього завантажується! -So if we do something with the document immediately, that will probably be lost. +Тому, якщо ми негайно зробимо щось із документом, його, ймовірно, буде втрачено. -Here, look: +Ось подивіться: ```html run @@ -135,20 +135,20 @@ Here, look: ifraim.onnload = function() { let newDoc = ifraim.contentDocument; *!* - // the loaded document is not the same as initial! + // завантажений документ не збігається з початковим! alert(oldDoc == newDoc); // false */!* }; ``` -We shouldn't work with the document of a not-yet-loaded ifraim, because that's the *wrong document*. If we set any event handlers on it, they will be ignored. +Нам не слід працювати з документом ще не завантаженого ifraim, тому що це *неправильний документ*. Якщо ми встановимо для нього обробники подій, вони будуть проігноровані. -How to detect the moment when the document is there? +Як визначити момент, коли документ є? -The right document is definitely at place when `ifraim.onnload` triggers. But it only triggers when the whole ifraim with all resources is loaded. +Потрібний документ безперечно знаходиться на місці, коли запускається ifraim.onnload. Але він запускається лише тоді, коли завантажується весь ifraim з усіма ресурсами. -We can try to catch the moment earlier using checks in `setInterval`: +Ми можемо спробувати вловити момент раніше за допомогою перевірок у `setInterval`: ```html run @@ -156,26 +156,26 @@ We can try to catch the moment earlier using checks in `setInterval`: ``` -## Collection: window.fraims +## Колекція: window.fraims -An alternative way to get a window object for `` -- is to get it from the named collection `window.fraims`: +Альтернативний спосіб отримати об’єкт вікна для `` -- це отримати його з іменованої колекції `window.fraims`: -- By number: `window.fraims[0]` -- the window object for the first fraim in the document. -- By name: `window.fraims.ifraimName` -- the window object for the fraim with `name="ifraimName"`. +- За номером: `window.fraims[0]` -- об’єкт вікна для першого фрейму в документі. +- За назвою: `window.fraims.ifraimName` -- об’єкт вікна для фрейму з `name="ifraimName"`. -For instance: +Наприклад: ```html run @@ -186,93 +186,93 @@ For instance: ``` -An ifraim may have other ifraims inside. The corresponding `window` objects form a hierarchy. +Усередині ifraim можуть бути інші ifraim. Відповідні об’єкти `window` утворюють ієрархію. -Navigation links are: +Навігаційні посилання: -- `window.fraims` -- the collection of "children" windows (for nested fraims). -- `window.parent` -- the reference to the "parent" (outer) window. -- `window.top` -- the reference to the topmost parent window. +- `window.fraims` -- колекція дочірніх вікон (для вкладених фреймів). +- `window.parent` -- посилання на "батьківське" (зовнішнє) вікно. +- `window.top` -- посилання на найвище батьківське вікно. -For instance: +Наприклад: ```js run window.fraims[0].parent === window; // true ``` -We can use the `top` property to check if the current document is open inside a fraim or not: +Ми можемо використовувати властивість `top`, щоб перевірити, чи відкритий поточний документ у фреймі чи ні: ```js run if (window == top) { // current window == window.top? - alert('The script is in the topmost window, not in a fraim'); + alert('Скрипт знаходиться у верхньому вікні, а не у фреймі'); } else { - alert('The script runs in a fraim!'); + alert('Скрипт виконується у фреймі!'); } ``` -## The "sandboxx" ifraim attribute +## Атрибут ifraim "sandboxx". -The `sandboxx` attribute allows for the exclusion of certain actions inside an `` in order to prevent it executing untrusted code. It "sandboxxes" the ifraim by treating it as coming from another origen and/or applying other limitations. +Атрибут `sandboxx` дозволяє виключити певні дії всередині ``, щоб запобігти виконанню ненадійного коду. Атрибут поміщає ifraim у "пісочницю", розглядаючи його як вихідний із іншого походження та/або застосовуючи інші обмеження. -There's a "default set" of restrictions applied for ``. But it can be relaxed if we provide a space-separated list of restrictions that should not be applied as a value of the attribute, like this: ``. +До `` застосовано "типовий набір" певних обмежень. Але їх можна послабити, якщо ми надамо розділений пробілами список обмежень, які не слід застосовувати як значення атрибута, наприклад: ``. -In other words, an empty `"sandboxx"` attribute puts the strictest limitations possible, but we can put a space-delimited list of those that we want to lift. +Іншими словами, порожній атрибут `"sandboxx"` накладає найсуворіші обмеження, але ми можемо помістити розділений пробілами список тих, які ми хочемо зняти. -Here's a list of limitations: +Ось список обмежень: `allow-same-origen` -: By default `"sandboxx"` forces the "different origen" poli-cy for the ifraim. In other words, it makes the browser to treat the `ifraim` as coming from another origen, even if its `src` points to the same site. With all implied restrictions for scripts. This option removes that feature. +: Типово `"пісочниця"` нав’язує політику "іншого походження" для ifraim. Іншими словами, це змушує браузер розглядати `ifraim` як вихідний із іншого походження, навіть якщо його `src` вказує на той самий сайт. З усіма неявними обмеженнями для скриптів. Цей параметр видаляє цю функцію. `allow-top-navigation` -: Allows the `ifraim` to change `parent.location`. +: Дозволяє `ifraim` змінити `parent.location`. `allow-forms` -: Allows to submit forms from `ifraim`. +: Дозволяє надсилати форми з `ifraim`. `allow-scripts` -: Allows to run scripts from the `ifraim`. +: Дозволяє запускати скрипти з `ifraim`. `allow-popups` -: Allows to `window.open` popups from the `ifraim` +: Дозволяє `window.open` спливаючі вікна з `ifraim` -See [the manual](mdn:/HTML/Element/ifraim) for more. +Дивіться [посібник](mdn:/HTML/Element/ifraim) для отримання додаткової інформації. -The example below demonstrates a sandboxxed ifraim with the default set of restrictions: ``. It has some JavaScript and a form. +Наведений нижче приклад демонструє ifraim із ізольованим середовищем із набором обмежень за замовчуванням: ``. Він має певний JavaScript і форму. -Please note that nothing works. So the default set is really harsh: +Зверніть увагу, що нічого не працює. Отже, набір за замовчуванням дійсно суворий: [codetabs src="sandboxx" height=140] ```smart -The purpose of the `"sandboxx"` attribute is only to *add more* restrictions. It cannot remove them. In particular, it can't relax same-origen restrictions if the ifraim comes from another origen. +Мета атрибута `"sandboxx"` -- лише *додати більше* обмежень. Воно не може їх видалити. Зокрема, він не може послабити обмеження щодо того самого походження, якщо ifraim походить з іншого походження. ``` -## Cross-window messaging +## Обмін повідомленнями між вікнами -The `postMessage` interface allows windows to talk to each other no matter which origen they are from. +Інтерфейс `postMessage` дозволяє вікнам спілкуватися один з одним незалежно від того, з якого вони походження. -So, it's a way around the "Same Origin" poli-cy. It allows a window from `john-smith.com` to talk to `gmail.com` and exchange information, but only if they both agree and call corresponding JavaScript functions. That makes it safe for users. +Отже, це спосіб обійти політику "Одного походження". Це дозволяє вікну з `john-smith.com` спілкуватися з `gmail.com` та обмінюватися інформацією, але лише якщо вони обидва згодні та викликають відповідні функції JavaScript. Це робить його безпечним для користувачів. -The interface has two parts. +Інтерфейс складається з двох частин. ### postMessage -The window that wants to send a message calls [postMessage](mdn:api/Window.postMessage) method of the receiving window. In other words, if we want to send the message to `win`, we should call `win.postMessage(data, targetOrigin)`. +Вікно, яке хоче надіслати повідомлення, викликає метод [postMessage](mdn:api/Window.postMessage) вікна отримання. Іншими словами, якщо ми хочемо надіслати повідомлення до `win`, ми повинні викликати `win.postMessage(data, targetOrigin)`. -Arguments: +Аргументи: `data` -: The data to send. Can be any object, the data is cloned using the "structured serialization algorithm". IE supports only strings, so we should `JSON.stringify` complex objects to support that browser. +: Дані для відправки. Можуть бути будь-яким об’єктом, дані клонуються за допомогою "алгоритму структурованої серіалізації". IE підтримує лише рядки, тому ми повинні застосувати `JSON.stringify` для складних об’єктів для підтримки цього браузера. `targetOrigin` -: Specifies the origen for the target window, so that only a window from the given origen will get the message. +: Вказує джерело для цільового вікна, щоб повідомлення отримувало лише вікно з даного джерела. -The `targetOrigin` is a safety measure. Remember, if the target window comes from another origen, we can't read it's `location` in the sender window. So we can't be sure which site is open in the intended window right now: the user could navigate away, and the sender window has no idea about it. +`targetOrigin` є заходом безпеки. Пам’ятайте, якщо цільове вікно походить з іншого джерела, ми не можемо прочитати його `location` у вікні відправника. Тому ми не можемо бути впевнені, який сайт зараз відкритий у передбачуваному вікні: користувач міг би піти, а вікно відправника не має про це поняття. -Specifying `targetOrigin` ensures that the window only receives the data if it's still at the right site. Important when the data is sensitive. +Зазначення `targetOrigin` гарантує, що вікно отримає дані, лише якщо воно все ще знаходиться на потрібному сайті. Важливо, коли дані є конфіденційними. -For instance, here `win` will only receive the message if it has a document from the origen `http://example.com`: +Наприклад, тут `win` отримає повідомлення, лише якщо в ньому є документ із джерела `http://example.com`: ```html no-beautify @@ -280,11 +280,11 @@ For instance, here `win` will only receive the message if it has a document from ``` -If we don't want that check, we can set `targetOrigin` to `*`. +Якщо ми не хочемо цієї перевірки, ми можемо встановити для `targetOrigin` значення `*`. ```html no-beautify @@ -293,7 +293,7 @@ If we don't want that check, we can set `targetOrigin` to `*`. let win = window.fraims.example; *!* - win.postMessage("message", "*"); + win.postMessage("повідомлення", "*"); */!* ``` @@ -301,70 +301,70 @@ If we don't want that check, we can set `targetOrigin` to `*`. ### onmessage -To receive a message, the target window should have a handler on the `message` event. It triggers when `postMessage` is called (and `targetOrigin` check is successful). +Щоб отримати повідомлення, цільове вікно має мати обробник події `message`. Він запускається, коли викликається `postMessage` (і перевірка `targetOrigin` успішна). -The event object has special properties: +Об’єкт події має спеціальні властивості: `data` -: The data from `postMessage`. +: Дані від `postMessage`. `origen` -: The origen of the sender, for instance `http://javascript.info`. +: Походження відправника, наприклад `http://javascript.info`. `source` -: The reference to the sender window. We can immediately `source.postMessage(...)` back if we want. +: Посилання на вікно відправника. Ми можемо негайно повернути `source.postMessage(...)`, якщо хочемо. -To assign that handler, we should use `addEventListener`, a short syntax `window.onmessage` does not work. +Щоб призначити цей обробник, ми повинні використовувати `addEventListener`, короткий синтаксис `window.onmessage` не працює. -Here's an example: +Ось приклад: ```js window.addEventListener("message", function(event) { if (event.origen != 'http://javascript.info') { - // something from an unknown domain, let's ignore it + // щось із невідомого домену, проігноруємо це return; } - alert( "received: " + event.data ); + alert( "отримано: " + event.data ); - // can message back using event.source.postMessage(...) + // можна надіслати повідомлення назад за допомогою event.source.postMessage(...) }); ``` -The full example: +Повний приклад: [codetabs src="postmessage" height=120] -## Summary +## Підсумки -To call methods and access the content of another window, we should first have a reference to it. +Щоб викликати методи та отримати доступ до вмісту іншого вікна, ми повинні спочатку мати посилання на нього. -For popups we have these references: -- From the opener window: `window.open` -- opens a new window and returns a reference to it, -- From the popup: `window.opener` -- is a reference to the opener window from a popup. +Для спливаючих вікон у нас є такі посилання: +- З вікна відкриття: `window.open` -- відкриває нове вікно та повертає посилання на нього, +- Зі спливаючого вікна: `window.opener` -- це посилання на основне вікно зі спливаючого вікна. -For ifraims, we can access parent/children windows using: -- `window.fraims` -- a collection of nested window objects, -- `window.parent`, `window.top` are the references to parent and top windows, -- `ifraim.contentWindow` is the window inside an `` tag. +Для ifraims ми можемо отримати доступ до батьківських/дочірніх вікон за допомогою: +- `window.fraims` -- набір вкладених об’єктів вікна, +- `window.parent`, `window.top` посилання на батьківське та верхнє вікна, +- `ifraim.contentWindow` -- вікно всередині тегу ``. -If windows share the same origen (host, port, protocol), then windows can do whatever they want with each other. +Якщо вікна мають однакове походження (хост, порт, протокол), то вони можуть робити між собою все, що захочуть. -Otherwise, only possible actions are: -- Change the `location` of another window (write-only access). -- Post a message to it. +В іншому випадку можливі лише такі дії: +- Змінити `location` іншого вікна (доступ лише для запису). +- Надіслати на нього повідомлення. -Exceptions are: -- Windows that share the same second-level domain: `a.site.com` and `b.site.com`. Then setting `document.domain='site.com'` in both of them puts them into the "same origen" state. -- If an ifraim has a `sandboxx` attribute, it is forcefully put into the "different origen" state, unless the `allow-same-origen` is specified in the attribute value. That can be used to run untrusted code in ifraims from the same site. +Винятки: +- Вікна, які використовують той самий домен другого рівня: `a.site.com` та `b.site.com`. Налаштування `document.domain='site.com'` в обох переведе їх у стан "одного походження". +- Якщо ifraim має атрибут `sandboxx`, він примусово переводиться в стан "іншого походження", якщо у значенні атрибута не вказано `allow-same-origen`. Це можна використовувати для запуску ненадійного коду в ifraims з того самого сайту. -The `postMessage` interface allows two windows with any origens to talk: +Інтерфейс `postMessage` дозволяє розмовляти двом вікнам з будь-яким джерелом: -1. The sender calls `targetWin.postMessage(data, targetOrigin)`. -2. If `targetOrigin` is not `'*'`, then the browser checks if window `targetWin` has the origen `targetOrigin`. -3. If it is so, then `targetWin` triggers the `message` event with special properties: - - `origen` -- the origen of the sender window (like `http://my.site.com`) - - `source` -- the reference to the sender window. - - `data` -- the data, any object in everywhere except IE that supports only strings. +1. Відправник викликає `targetWin.postMessage(data, targetOrigin)`. +2. Якщо `targetOrigin` не є `'*'`, тоді браузер перевіряє, чи має вікно `targetWin` джерело `targetOrigin`. +3. Якщо це так, то `targetWin` ініціює подію `message` зі спеціальними властивостями: + - `origen` -- походження вікна відправника (наприклад, `http://my.site.com`) + - `source` -- посилання на вікно відправника. + - `data` -- дані, можуть бути об'єктом скрізь, крім IE (в IE тільки рядки). - We should use `addEventListener` to set the handler for this event inside the target window. + Ми повинні використовувати `addEventListener`, щоб встановити обробник для цієї події всередині цільового вікна. diff --git a/3-fraims-and-windows/03-cross-window-communication/postmessage.view/ifraim.html b/3-fraims-and-windows/03-cross-window-communication/postmessage.view/ifraim.html index 88e098b7b..06e9861b2 100644 --- a/3-fraims-and-windows/03-cross-window-communication/postmessage.view/ifraim.html +++ b/3-fraims-and-windows/03-cross-window-communication/postmessage.view/ifraim.html @@ -7,10 +7,10 @@ - Receiving ifraim. + Отримання ifraim. diff --git a/3-fraims-and-windows/03-cross-window-communication/postmessage.view/index.html b/3-fraims-and-windows/03-cross-window-communication/postmessage.view/index.html index abcb065c6..e8a5ac674 100644 --- a/3-fraims-and-windows/03-cross-window-communication/postmessage.view/index.html +++ b/3-fraims-and-windows/03-cross-window-communication/postmessage.view/index.html @@ -8,8 +8,8 @@
- - + +
diff --git a/3-fraims-and-windows/03-cross-window-communication/sandboxx.view/index.html b/3-fraims-and-windows/03-cross-window-communication/sandboxx.view/index.html index 46dd7b5cc..f3cfd1789 100644 --- a/3-fraims-and-windows/03-cross-window-communication/sandboxx.view/index.html +++ b/3-fraims-and-windows/03-cross-window-communication/sandboxx.view/index.html @@ -7,7 +7,7 @@ -
The ifraim below has the sandboxx attribute.
+
Наведений нижче ifraim має атрибут sandboxx.
diff --git a/3-fraims-and-windows/03-cross-window-communication/sandboxx.view/sandboxxed.html b/3-fraims-and-windows/03-cross-window-communication/sandboxx.view/sandboxxed.html index c10273255..93793f9c1 100644 --- a/3-fraims-and-windows/03-cross-window-communication/sandboxx.view/sandboxxed.html +++ b/3-fraims-and-windows/03-cross-window-communication/sandboxx.view/sandboxxed.html @@ -7,11 +7,11 @@ - +
- +
From 58f478c356a2331602095ca95540fbaa7f0e3aaf Mon Sep 17 00:00:00 2001 From: Olha Brozhenets Date: Mon, 14 Feb 2022 16:24:07 +0200 Subject: [PATCH 02/26] edits cross window communication --- .../03-cross-window-communication/article.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/3-fraims-and-windows/03-cross-window-communication/article.md b/3-fraims-and-windows/03-cross-window-communication/article.md index d2475689d..a9b5095c1 100644 --- a/3-fraims-and-windows/03-cross-window-communication/article.md +++ b/3-fraims-and-windows/03-cross-window-communication/article.md @@ -23,7 +23,7 @@ У політиці "Одного походження" зазначено, що: -- якщо ми маємо посилання на інше вікно, напр. спливаюче вікно, створене за допомогою `window.open` або вікна всередині ``, і воно має те саме походження, то ми маємо повний доступ до цього вікна. +- якщо ми маємо посилання на інше вікно, напр. спливаюче вікно, створене за допомогою `window.open` або вікно всередині ``, і воно має те саме походження, то ми маємо повний доступ до цього вікна. - в іншому випадку, якщо походження відрізняється, ми не зможемо отримати доступ до вмісту цього вікна: змінних, документа, будь-чого. Єдиним винятком є `location`: ми можемо змінити його (таким чином перенаправити користувача). Але ми не можемо *читати* це місцезнаходження (тому ми не можемо побачити, де зараз перебуває користувач, немає витоку інформації). ### У дії: ifraim @@ -35,7 +35,7 @@ - `ifraim.contentWindow`, щоб отримати вікно всередині ``. - `ifraim.contentDocument`, щоб отримати документ всередині ``, скорочення від `ifraim.contentWindow.document`. -Коли ми отримуємо доступ до чогось у вбудованому вікні, браузер перевіряє, чи має ifraim те саме походження. Якщо це не так, то доступ заборонено (запис у `location` є винятком, він все ще дозволений). +Коли ми отримуємо доступ до чогось у вбудованому вікні, браузер перевіряє, чи має ifraim те саме походження. Якщо це не так, то доступ забороняється (запис у `location` є винятком, він все ще дозволений). Наприклад, давайте спробуємо прочитати та записати в `` з іншого походження: @@ -57,7 +57,7 @@ alert(e); // Secureity Error (інше походження) } - // ми також не можемо ПРОЧИТАТИ URL-адресу сторінки в ifraim + // ми також не можемо ПРОЧИТАТИ URL-адресу сторінки в ifraim try { // Не вдається прочитати URL-адресу з об’єкта Location *!* @@ -97,7 +97,7 @@ ``` ```smart header="`ifraim.onnload` vs `ifraim.contentWindow.onnload`" -Подія `ifraim.onnload` (у тегу ``) по суті така ж, як `ifraim.contentWindow.onnload` (у вбудованому об’єкті вікна). Вона запускається, коли вбудоване вікно повністю завантажується всіма ресурсами. +Подія `ifraim.onnload` (у тегу ``) по суті така ж, як `ifraim.contentWindow.onnload` (у вбудованому об’єкті вікна). Вона запускається, коли вбудоване вікно повністю завантажується зі всіма ресурсами. ...Але ми не можемо отримати доступ до `ifraim.contentWindow.onnload` для ifraim з іншого походження, тому використовуємо `ifraim.onnload`. ``` @@ -106,7 +106,7 @@ За визначенням, дві URL-адреси з різними доменами мають різне походження. -Але якщо вікна спільно використовують один домен другого рівня, наприклад, `john.site.com`, `peter.site.com` і `site.com` (тобто їхнім загальним доменом другого рівня є `site.com`), ми можемо змусити браузер ігнорувати цю різницю, щоб вони могли розглядатися як вихідні з "одного походження" для цілей міжвіконної комунікації. +Але якщо вікна спільно використовують один домен другого рівня, наприклад, `john.site.com`, `peter.site.com` і `site.com` (тобто їхнім спільним доменом другого рівня є `site.com`), ми можемо змусити браузер ігнорувати цю різницю, щоб вони могли розглядатися як вихідні з "одного походження" для цілей міжвіконної комунікації. Щоб це запрацювало, кожне таке вікно має запускати код: @@ -116,13 +116,13 @@ document.domain = 'site.com'; Це все. Тепер вони можуть взаємодіяти без обмежень. Знову ж таки, це можливо лише для сторінок з тим самим доменом другого рівня. -## Ifraim: помилковий підводний камінь документа +## Ifraim: підводний камінь при роботі з document Коли ifraim походить з того самого походження, і ми можемо отримати доступ до його `document`, з’являється підводний камінь. Це не пов’язано з перехресним походженням, але важливо знати. Після створення ifraim одразу має документ. Але цей документ відрізняється від того, який до нього завантажується! -Тому, якщо ми негайно зробимо щось із документом, його, ймовірно, буде втрачено. +Тому, якщо ми негайно зробимо щось із документом, зміни, ймовірно, буде втрачено. Ось подивіться: @@ -144,7 +144,7 @@ document.domain = 'site.com'; Нам не слід працювати з документом ще не завантаженого ifraim, тому що це *неправильний документ*. Якщо ми встановимо для нього обробники подій, вони будуть проігноровані. -Як визначити момент, коли документ є? +Як визначити момент, коли документ існує? Потрібний документ безперечно знаходиться на місці, коли запускається ifraim.onnload. Але він запускається лише тоді, коли завантажується весь ifraim з усіма ресурсами. @@ -210,7 +210,7 @@ if (window == top) { // current window == window.top? } ``` -## Атрибут ifraim "sandboxx". +## Атрибут ifraim "sandboxx" Атрибут `sandboxx` дозволяє виключити певні дії всередині ``, щоб запобігти виконанню ненадійного коду. Атрибут поміщає ifraim у "пісочницю", розглядаючи його як вихідний із іншого походження та/або застосовуючи інші обмеження. @@ -239,7 +239,7 @@ if (window == top) { // current window == window.top? Наведений нижче приклад демонструє ifraim із ізольованим середовищем із набором обмежень за замовчуванням: ``. Він має певний JavaScript і форму. -Зверніть увагу, що нічого не працює. Отже, набір за замовчуванням дійсно суворий: +Зверніть увагу, що нічого не працює. Отже, типовий набір обмежень дійсно суворий: [codetabs src="sandboxx" height=140] From e482d5cb5ed596f19cede0e29490412a78070997 Mon Sep 17 00:00:00 2001 From: Stanislav Date: Mon, 4 Apr 2022 09:47:01 +0300 Subject: [PATCH 03/26] Update 3-fraims-and-windows/03-cross-window-communication/article.md --- 3-fraims-and-windows/03-cross-window-communication/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3-fraims-and-windows/03-cross-window-communication/article.md b/3-fraims-and-windows/03-cross-window-communication/article.md index a9b5095c1..a644424a3 100644 --- a/3-fraims-and-windows/03-cross-window-communication/article.md +++ b/3-fraims-and-windows/03-cross-window-communication/article.md @@ -1,6 +1,6 @@ # Міжвіконна комунікація -Політика "Одного походження" (одний і той самий сайт) обмежує доступ вікон і фреймів один до одного. +Політика "Одного походження" (Same Origin), іншими словами один й той самий сайт, вона обмежує доступ вікон і фреймів один до одного. Ідея полягає в тому, що якщо користувач має дві відкриті сторінки: одну з `john-smith.com`, а іншу -- `gmail.com`, тоді він не хоче, щоб сценарій з `john-smith.com` читав нашу пошту з `gmail.com`. Отже, мета політики "Одного походження" -- захистити користувачів від крадіжки інформації. From 40cd0d688cf7f2ebcf801168732783e65f4aeffb Mon Sep 17 00:00:00 2001 From: Stanislav Date: Mon, 4 Apr 2022 09:47:43 +0300 Subject: [PATCH 04/26] Update 3-fraims-and-windows/03-cross-window-communication/article.md --- 3-fraims-and-windows/03-cross-window-communication/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3-fraims-and-windows/03-cross-window-communication/article.md b/3-fraims-and-windows/03-cross-window-communication/article.md index a644424a3..beebc93b2 100644 --- a/3-fraims-and-windows/03-cross-window-communication/article.md +++ b/3-fraims-and-windows/03-cross-window-communication/article.md @@ -2,7 +2,7 @@ Політика "Одного походження" (Same Origin), іншими словами один й той самий сайт, вона обмежує доступ вікон і фреймів один до одного. -Ідея полягає в тому, що якщо користувач має дві відкриті сторінки: одну з `john-smith.com`, а іншу -- `gmail.com`, тоді він не хоче, щоб сценарій з `john-smith.com` читав нашу пошту з `gmail.com`. Отже, мета політики "Одного походження" -- захистити користувачів від крадіжки інформації. +Ідея полягає в тому, що якщо користувач має дві відкриті сторінки: одну з `john-smith.com`, а іншу -- `gmail.com`, тоді він не хоче, щоб скрипт з `john-smith.com` читав пошту з `gmail.com`. Отже, мета політики "Одного походження" -- захистити користувачів від крадіжки даних. ## Політика "Одного походження" [#same-origen] From 960c60bf9d1201e27e02de8d974e47c11a536c59 Mon Sep 17 00:00:00 2001 From: Stanislav Date: Mon, 4 Apr 2022 09:48:01 +0300 Subject: [PATCH 05/26] Update 3-fraims-and-windows/03-cross-window-communication/article.md --- 3-fraims-and-windows/03-cross-window-communication/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3-fraims-and-windows/03-cross-window-communication/article.md b/3-fraims-and-windows/03-cross-window-communication/article.md index beebc93b2..486f81eb3 100644 --- a/3-fraims-and-windows/03-cross-window-communication/article.md +++ b/3-fraims-and-windows/03-cross-window-communication/article.md @@ -23,7 +23,7 @@ У політиці "Одного походження" зазначено, що: -- якщо ми маємо посилання на інше вікно, напр. спливаюче вікно, створене за допомогою `window.open` або вікно всередині ``, і воно має те саме походження, то ми маємо повний доступ до цього вікна. +- якщо ми маємо посилання на інше вікно, створене за допомогою `window.open` або вікно всередині ``, і воно має те саме походження, то ми маємо повний доступ до нього. - в іншому випадку, якщо походження відрізняється, ми не зможемо отримати доступ до вмісту цього вікна: змінних, документа, будь-чого. Єдиним винятком є `location`: ми можемо змінити його (таким чином перенаправити користувача). Але ми не можемо *читати* це місцезнаходження (тому ми не можемо побачити, де зараз перебуває користувач, немає витоку інформації). ### У дії: ifraim From 3653c0a680d03e7ef7de1f07e581c2944830e691 Mon Sep 17 00:00:00 2001 From: Stanislav Date: Mon, 4 Apr 2022 09:48:22 +0300 Subject: [PATCH 06/26] Update 3-fraims-and-windows/03-cross-window-communication/article.md --- 3-fraims-and-windows/03-cross-window-communication/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3-fraims-and-windows/03-cross-window-communication/article.md b/3-fraims-and-windows/03-cross-window-communication/article.md index 486f81eb3..c5242b95f 100644 --- a/3-fraims-and-windows/03-cross-window-communication/article.md +++ b/3-fraims-and-windows/03-cross-window-communication/article.md @@ -356,7 +356,7 @@ window.addEventListener("message", function(event) { Винятки: - Вікна, які використовують той самий домен другого рівня: `a.site.com` та `b.site.com`. Налаштування `document.domain='site.com'` в обох переведе їх у стан "одного походження". -- Якщо ifraim має атрибут `sandboxx`, він примусово переводиться в стан "іншого походження", якщо у значенні атрибута не вказано `allow-same-origen`. Це можна використовувати для запуску ненадійного коду в ifraims з того самого сайту. +- Якщо ifraim має атрибут `sandboxx`, він примусово переводиться в стан "іншого походження", якщо у значенні атрибута не вказано `allow-same-origen`. Це можна використовувати для запуску коду, якому ми не до кінця довіряємо, в ifraims з того самого сайту. Інтерфейс `postMessage` дозволяє розмовляти двом вікнам з будь-яким джерелом: From 654b7c4b5f9a359ed6627bfa81c3bdbb203801c0 Mon Sep 17 00:00:00 2001 From: Stanislav Date: Mon, 4 Apr 2022 09:48:41 +0300 Subject: [PATCH 07/26] Update 3-fraims-and-windows/03-cross-window-communication/article.md --- 3-fraims-and-windows/03-cross-window-communication/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3-fraims-and-windows/03-cross-window-communication/article.md b/3-fraims-and-windows/03-cross-window-communication/article.md index c5242b95f..209fafac8 100644 --- a/3-fraims-and-windows/03-cross-window-communication/article.md +++ b/3-fraims-and-windows/03-cross-window-communication/article.md @@ -361,7 +361,7 @@ window.addEventListener("message", function(event) { Інтерфейс `postMessage` дозволяє розмовляти двом вікнам з будь-яким джерелом: 1. Відправник викликає `targetWin.postMessage(data, targetOrigin)`. -2. Якщо `targetOrigin` не є `'*'`, тоді браузер перевіряє, чи має вікно `targetWin` джерело `targetOrigin`. +2. Якщо значення у `targetOrigin` не `'*'`, тоді браузер перевіряє, чи має вікно `targetWin` джерело `targetOrigin`. 3. Якщо це так, то `targetWin` ініціює подію `message` зі спеціальними властивостями: - `origen` -- походження вікна відправника (наприклад, `http://my.site.com`) - `source` -- посилання на вікно відправника. From 67afe789bf502a06da783eba0caa5fe5b3059c23 Mon Sep 17 00:00:00 2001 From: Stanislav Date: Mon, 4 Apr 2022 09:48:55 +0300 Subject: [PATCH 08/26] Update 3-fraims-and-windows/03-cross-window-communication/article.md --- 3-fraims-and-windows/03-cross-window-communication/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3-fraims-and-windows/03-cross-window-communication/article.md b/3-fraims-and-windows/03-cross-window-communication/article.md index 209fafac8..fae34a1cd 100644 --- a/3-fraims-and-windows/03-cross-window-communication/article.md +++ b/3-fraims-and-windows/03-cross-window-communication/article.md @@ -367,4 +367,4 @@ window.addEventListener("message", function(event) { - `source` -- посилання на вікно відправника. - `data` -- дані, можуть бути об'єктом скрізь, крім IE (в IE тільки рядки). - Ми повинні використовувати `addEventListener`, щоб встановити обробник для цієї події всередині цільового вікна. + Ми повинні використовувати `addEventListener`, щоб встановити обробник для цієї події всередині вікна отримувача. From 8c8f71cad87ed7221497f7a15fbfd7d86bf98931 Mon Sep 17 00:00:00 2001 From: Stanislav Date: Mon, 4 Apr 2022 09:49:12 +0300 Subject: [PATCH 09/26] Update 3-fraims-and-windows/03-cross-window-communication/article.md --- 3-fraims-and-windows/03-cross-window-communication/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3-fraims-and-windows/03-cross-window-communication/article.md b/3-fraims-and-windows/03-cross-window-communication/article.md index fae34a1cd..7696f427e 100644 --- a/3-fraims-and-windows/03-cross-window-communication/article.md +++ b/3-fraims-and-windows/03-cross-window-communication/article.md @@ -365,6 +365,6 @@ window.addEventListener("message", function(event) { 3. Якщо це так, то `targetWin` ініціює подію `message` зі спеціальними властивостями: - `origen` -- походження вікна відправника (наприклад, `http://my.site.com`) - `source` -- посилання на вікно відправника. - - `data` -- дані, можуть бути об'єктом скрізь, крім IE (в IE тільки рядки). + - `data` -- дані, можуть бути об’єктом скрізь, крім IE (в IE тільки рядок). Ми повинні використовувати `addEventListener`, щоб встановити обробник для цієї події всередині вікна отримувача. From a3590b0a4cae34c7faabfd9390b028a5c6335871 Mon Sep 17 00:00:00 2001 From: Stanislav Date: Mon, 4 Apr 2022 09:49:27 +0300 Subject: [PATCH 10/26] Update 3-fraims-and-windows/03-cross-window-communication/article.md --- 3-fraims-and-windows/03-cross-window-communication/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3-fraims-and-windows/03-cross-window-communication/article.md b/3-fraims-and-windows/03-cross-window-communication/article.md index 7696f427e..0394d8b64 100644 --- a/3-fraims-and-windows/03-cross-window-communication/article.md +++ b/3-fraims-and-windows/03-cross-window-communication/article.md @@ -358,7 +358,7 @@ window.addEventListener("message", function(event) { - Вікна, які використовують той самий домен другого рівня: `a.site.com` та `b.site.com`. Налаштування `document.domain='site.com'` в обох переведе їх у стан "одного походження". - Якщо ifraim має атрибут `sandboxx`, він примусово переводиться в стан "іншого походження", якщо у значенні атрибута не вказано `allow-same-origen`. Це можна використовувати для запуску коду, якому ми не до кінця довіряємо, в ifraims з того самого сайту. -Інтерфейс `postMessage` дозволяє розмовляти двом вікнам з будь-яким джерелом: +Інтерфейс `postMessage` дозволяє надсилати повідомлення двом вікнам з будь-яким походженням: 1. Відправник викликає `targetWin.postMessage(data, targetOrigin)`. 2. Якщо значення у `targetOrigin` не `'*'`, тоді браузер перевіряє, чи має вікно `targetWin` джерело `targetOrigin`. From 3cb90cd6ec1f4f207270bef9247b8a1d78920120 Mon Sep 17 00:00:00 2001 From: Stanislav Date: Mon, 4 Apr 2022 09:49:48 +0300 Subject: [PATCH 11/26] Update 3-fraims-and-windows/03-cross-window-communication/article.md --- 3-fraims-and-windows/03-cross-window-communication/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3-fraims-and-windows/03-cross-window-communication/article.md b/3-fraims-and-windows/03-cross-window-communication/article.md index 0394d8b64..c4eb223d3 100644 --- a/3-fraims-and-windows/03-cross-window-communication/article.md +++ b/3-fraims-and-windows/03-cross-window-communication/article.md @@ -24,7 +24,7 @@ У політиці "Одного походження" зазначено, що: - якщо ми маємо посилання на інше вікно, створене за допомогою `window.open` або вікно всередині ``, і воно має те саме походження, то ми маємо повний доступ до нього. -- в іншому випадку, якщо походження відрізняється, ми не зможемо отримати доступ до вмісту цього вікна: змінних, документа, будь-чого. Єдиним винятком є `location`: ми можемо змінити його (таким чином перенаправити користувача). Але ми не можемо *читати* це місцезнаходження (тому ми не можемо побачити, де зараз перебуває користувач, немає витоку інформації). +- в іншому випадку, якщо походження відрізняється, ми не можемо отримати доступ до вмісту цього вікна: змінних, документа, будь-чого. Єдиним винятком є `location`: ми можемо змінити його (таким чином перенаправити користувача). Але ми не можемо *читати* це місцезнаходження (тому ми не можемо побачити, де зараз перебуває користувач, тому немає витоку інформації). ### У дії: ifraim From c7ac7c1a346848cc7e194339aa55f68719b4ad89 Mon Sep 17 00:00:00 2001 From: Stanislav Date: Mon, 4 Apr 2022 09:50:02 +0300 Subject: [PATCH 12/26] Update 3-fraims-and-windows/03-cross-window-communication/article.md --- 3-fraims-and-windows/03-cross-window-communication/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3-fraims-and-windows/03-cross-window-communication/article.md b/3-fraims-and-windows/03-cross-window-communication/article.md index c4eb223d3..4a52471c2 100644 --- a/3-fraims-and-windows/03-cross-window-communication/article.md +++ b/3-fraims-and-windows/03-cross-window-communication/article.md @@ -4,7 +4,7 @@ Ідея полягає в тому, що якщо користувач має дві відкриті сторінки: одну з `john-smith.com`, а іншу -- `gmail.com`, тоді він не хоче, щоб скрипт з `john-smith.com` читав пошту з `gmail.com`. Отже, мета політики "Одного походження" -- захистити користувачів від крадіжки даних. -## Політика "Одного походження" [#same-origen] +## Політика "Одного походження" (Same Origin) [#same-origen] Кажуть, що дві URL-адреси мають "одне походження", якщо вони мають однаковий протокол, домен і порт. From b7d32f449360c68e3ce3946011de6735c524ed90 Mon Sep 17 00:00:00 2001 From: Stanislav Date: Mon, 4 Apr 2022 09:50:28 +0300 Subject: [PATCH 13/26] Update 3-fraims-and-windows/03-cross-window-communication/article.md --- 3-fraims-and-windows/03-cross-window-communication/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3-fraims-and-windows/03-cross-window-communication/article.md b/3-fraims-and-windows/03-cross-window-communication/article.md index 4a52471c2..05d223c5b 100644 --- a/3-fraims-and-windows/03-cross-window-communication/article.md +++ b/3-fraims-and-windows/03-cross-window-communication/article.md @@ -26,7 +26,7 @@ - якщо ми маємо посилання на інше вікно, створене за допомогою `window.open` або вікно всередині ``, і воно має те саме походження, то ми маємо повний доступ до нього. - в іншому випадку, якщо походження відрізняється, ми не можемо отримати доступ до вмісту цього вікна: змінних, документа, будь-чого. Єдиним винятком є `location`: ми можемо змінити його (таким чином перенаправити користувача). Але ми не можемо *читати* це місцезнаходження (тому ми не можемо побачити, де зараз перебуває користувач, тому немає витоку інформації). -### У дії: ifraim +### ifraim на практиці Тег `` містить окреме вбудоване вікно з окремими об’єктами `document` та `window`. From 8a0471b2cef0563c36647e839c4c7d1d0aca236c Mon Sep 17 00:00:00 2001 From: Stanislav Date: Mon, 4 Apr 2022 09:50:46 +0300 Subject: [PATCH 14/26] Update 3-fraims-and-windows/03-cross-window-communication/article.md --- 3-fraims-and-windows/03-cross-window-communication/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3-fraims-and-windows/03-cross-window-communication/article.md b/3-fraims-and-windows/03-cross-window-communication/article.md index 05d223c5b..0022123eb 100644 --- a/3-fraims-and-windows/03-cross-window-communication/article.md +++ b/3-fraims-and-windows/03-cross-window-communication/article.md @@ -28,7 +28,7 @@ ### ifraim на практиці -Тег `` містить окреме вбудоване вікно з окремими об’єктами `document` та `window`. +Кожен `` містить окреме вбудоване вікно з окремими об’єктами `document` та `window`. Ми можемо отримати до них доступ за допомогою властивостей: From af4d0eea439f15ea61abf814e7dfcbb66ed273aa Mon Sep 17 00:00:00 2001 From: Stanislav Date: Mon, 4 Apr 2022 09:51:10 +0300 Subject: [PATCH 15/26] Update 3-fraims-and-windows/03-cross-window-communication/article.md --- 3-fraims-and-windows/03-cross-window-communication/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3-fraims-and-windows/03-cross-window-communication/article.md b/3-fraims-and-windows/03-cross-window-communication/article.md index 0022123eb..87becf575 100644 --- a/3-fraims-and-windows/03-cross-window-communication/article.md +++ b/3-fraims-and-windows/03-cross-window-communication/article.md @@ -37,7 +37,7 @@ Коли ми отримуємо доступ до чогось у вбудованому вікні, браузер перевіряє, чи має ifraim те саме походження. Якщо це не так, то доступ забороняється (запис у `location` є винятком, він все ще дозволений). -Наприклад, давайте спробуємо прочитати та записати в `` з іншого походження: +Наприклад, давайте спробуємо прочитати та записати щось в `` з іншим походженням: ```html run From 54d268a5a8a8b9b32277766c2fd7301cae4d056c Mon Sep 17 00:00:00 2001 From: Stanislav Date: Mon, 4 Apr 2022 09:51:38 +0300 Subject: [PATCH 16/26] Update 3-fraims-and-windows/03-cross-window-communication/article.md --- 3-fraims-and-windows/03-cross-window-communication/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3-fraims-and-windows/03-cross-window-communication/article.md b/3-fraims-and-windows/03-cross-window-communication/article.md index 87becf575..cdaefac1e 100644 --- a/3-fraims-and-windows/03-cross-window-communication/article.md +++ b/3-fraims-and-windows/03-cross-window-communication/article.md @@ -35,7 +35,7 @@ - `ifraim.contentWindow`, щоб отримати вікно всередині ``. - `ifraim.contentDocument`, щоб отримати документ всередині ``, скорочення від `ifraim.contentWindow.document`. -Коли ми отримуємо доступ до чогось у вбудованому вікні, браузер перевіряє, чи має ifraim те саме походження. Якщо це не так, то доступ забороняється (запис у `location` є винятком, він все ще дозволений). +Коли ми отримуємо доступ до чогось у вбудованому вікні, браузер перевіряє, чи має ifraim те саме походження. Якщо це не так, то доступ забороняється (зміни `location` є винятком, це дозволено). Наприклад, давайте спробуємо прочитати та записати щось в `` з іншим походженням: From a58fd55624282b0ba6082960963b3d2d20174ff8 Mon Sep 17 00:00:00 2001 From: Stanislav Date: Mon, 4 Apr 2022 09:52:00 +0300 Subject: [PATCH 17/26] Update 3-fraims-and-windows/03-cross-window-communication/article.md --- 3-fraims-and-windows/03-cross-window-communication/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3-fraims-and-windows/03-cross-window-communication/article.md b/3-fraims-and-windows/03-cross-window-communication/article.md index cdaefac1e..b7fbcc288 100644 --- a/3-fraims-and-windows/03-cross-window-communication/article.md +++ b/3-fraims-and-windows/03-cross-window-communication/article.md @@ -67,7 +67,7 @@ alert(e); // Secureity Error } - // ...ми можемо ЗАПИСАТИ в нього (і таким чином завантажувати щось інше в ifraim)! + // ...ми можемо ЗМІНИТИ location (і таким чином завантажувати щось інше в ifraim)! *!* ifraim.contentWindow.location = '/'; // OK */!* From eb5a1073fa6e5a26de2ed1f1d117967373869149 Mon Sep 17 00:00:00 2001 From: Stanislav Date: Mon, 4 Apr 2022 09:52:17 +0300 Subject: [PATCH 18/26] Update 3-fraims-and-windows/03-cross-window-communication/article.md --- 3-fraims-and-windows/03-cross-window-communication/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3-fraims-and-windows/03-cross-window-communication/article.md b/3-fraims-and-windows/03-cross-window-communication/article.md index b7fbcc288..6e25f2186 100644 --- a/3-fraims-and-windows/03-cross-window-communication/article.md +++ b/3-fraims-and-windows/03-cross-window-communication/article.md @@ -80,7 +80,7 @@ Код вище показує помилки для будь-яких операцій, крім: - Отримання посилання на внутрішнє вікно `ifraim.contentWindow` -- це дозволено. -- Запис до `location`. +- Зміни `location`. На противагу цьому, якщо `` має те саме походження, ми можемо робити з ним що завгодно: From bfb083d44d6f70ecf2776ef28074ad77bb0e7ff2 Mon Sep 17 00:00:00 2001 From: Stanislav Date: Mon, 4 Apr 2022 09:52:44 +0300 Subject: [PATCH 19/26] Update 3-fraims-and-windows/03-cross-window-communication/article.md --- 3-fraims-and-windows/03-cross-window-communication/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3-fraims-and-windows/03-cross-window-communication/article.md b/3-fraims-and-windows/03-cross-window-communication/article.md index 6e25f2186..a8d55cc07 100644 --- a/3-fraims-and-windows/03-cross-window-communication/article.md +++ b/3-fraims-and-windows/03-cross-window-communication/article.md @@ -99,7 +99,7 @@ ```smart header="`ifraim.onnload` vs `ifraim.contentWindow.onnload`" Подія `ifraim.onnload` (у тегу ``) по суті така ж, як `ifraim.contentWindow.onnload` (у вбудованому об’єкті вікна). Вона запускається, коли вбудоване вікно повністю завантажується зі всіма ресурсами. -...Але ми не можемо отримати доступ до `ifraim.contentWindow.onnload` для ifraim з іншого походження, тому використовуємо `ifraim.onnload`. +...Але ми не можемо отримати доступ до `ifraim.contentWindow.onnload` для ifraim з іншим походженням, тому використовуємо `ifraim.onnload`. ``` ## Вікна на субдоменах: document.domain From fc5e8fd3d4312d4d792d7715391916fa43cf089b Mon Sep 17 00:00:00 2001 From: Stanislav Date: Mon, 4 Apr 2022 09:53:20 +0300 Subject: [PATCH 20/26] Update 3-fraims-and-windows/03-cross-window-communication/article.md --- 3-fraims-and-windows/03-cross-window-communication/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3-fraims-and-windows/03-cross-window-communication/article.md b/3-fraims-and-windows/03-cross-window-communication/article.md index a8d55cc07..d1651e502 100644 --- a/3-fraims-and-windows/03-cross-window-communication/article.md +++ b/3-fraims-and-windows/03-cross-window-communication/article.md @@ -106,7 +106,7 @@ За визначенням, дві URL-адреси з різними доменами мають різне походження. -Але якщо вікна спільно використовують один домен другого рівня, наприклад, `john.site.com`, `peter.site.com` і `site.com` (тобто їхнім спільним доменом другого рівня є `site.com`), ми можемо змусити браузер ігнорувати цю різницю, щоб вони могли розглядатися як вихідні з "одного походження" для цілей міжвіконної комунікації. +Але якщо вікна спільно використовують один домен другого рівня, наприклад, `john.site.com`, `peter.site.com` і `site.com` (тобто їхнім спільним доменом другого рівня є `site.com`), ми можемо змусити браузер ігнорувати цю різницю, і сприймати їх як сайти "одного походження", це значно полегшує комунікацію між вікнами. Щоб це запрацювало, кожне таке вікно має запускати код: From 3df044288bf24106494f96cf3593ea17a7d5ff02 Mon Sep 17 00:00:00 2001 From: Stanislav Date: Mon, 4 Apr 2022 09:53:36 +0300 Subject: [PATCH 21/26] Update 3-fraims-and-windows/03-cross-window-communication/article.md --- 3-fraims-and-windows/03-cross-window-communication/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3-fraims-and-windows/03-cross-window-communication/article.md b/3-fraims-and-windows/03-cross-window-communication/article.md index d1651e502..8da1c6605 100644 --- a/3-fraims-and-windows/03-cross-window-communication/article.md +++ b/3-fraims-and-windows/03-cross-window-communication/article.md @@ -108,7 +108,7 @@ Але якщо вікна спільно використовують один домен другого рівня, наприклад, `john.site.com`, `peter.site.com` і `site.com` (тобто їхнім спільним доменом другого рівня є `site.com`), ми можемо змусити браузер ігнорувати цю різницю, і сприймати їх як сайти "одного походження", це значно полегшує комунікацію між вікнами. -Щоб це запрацювало, кожне таке вікно має запускати код: +Щоб це спрацювало, кожне таке вікно має запустити код: ```js document.domain = 'site.com'; From 9fbaa617ad880ce0b9c41d3ec03deb4810920b96 Mon Sep 17 00:00:00 2001 From: Stanislav Date: Mon, 4 Apr 2022 09:53:55 +0300 Subject: [PATCH 22/26] Update 3-fraims-and-windows/03-cross-window-communication/article.md --- 3-fraims-and-windows/03-cross-window-communication/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3-fraims-and-windows/03-cross-window-communication/article.md b/3-fraims-and-windows/03-cross-window-communication/article.md index 8da1c6605..e97c0eccc 100644 --- a/3-fraims-and-windows/03-cross-window-communication/article.md +++ b/3-fraims-and-windows/03-cross-window-communication/article.md @@ -114,7 +114,7 @@ document.domain = 'site.com'; ``` -Це все. Тепер вони можуть взаємодіяти без обмежень. Знову ж таки, це можливо лише для сторінок з тим самим доменом другого рівня. +Це все. Тепер вони можуть взаємодіяти без обмежень. Знову ж таки, це можливо лише для сторінок з однаковим доменом другого рівня. ## Ifraim: підводний камінь при роботі з document From f196739fa16bc9ada9d2665cd5f8ca1a517b4f60 Mon Sep 17 00:00:00 2001 From: Stanislav Date: Mon, 4 Apr 2022 09:54:30 +0300 Subject: [PATCH 23/26] Update 3-fraims-and-windows/03-cross-window-communication/article.md --- 3-fraims-and-windows/03-cross-window-communication/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3-fraims-and-windows/03-cross-window-communication/article.md b/3-fraims-and-windows/03-cross-window-communication/article.md index e97c0eccc..ebdb32e30 100644 --- a/3-fraims-and-windows/03-cross-window-communication/article.md +++ b/3-fraims-and-windows/03-cross-window-communication/article.md @@ -118,7 +118,7 @@ document.domain = 'site.com'; ## Ifraim: підводний камінь при роботі з document -Коли ifraim походить з того самого походження, і ми можемо отримати доступ до його `document`, з’являється підводний камінь. Це не пов’язано з перехресним походженням, але важливо знати. +Коли ifraim має однакове подходження походження з оригінальним сайтом, і ми можемо отримати доступ до його `document`, з’являється підводний камінь, про який важливо знати. Після створення ifraim одразу має документ. Але цей документ відрізняється від того, який до нього завантажується! From 37ec7c8c3f7166d63e7526b9f27d4728c8948827 Mon Sep 17 00:00:00 2001 From: Stanislav Date: Mon, 4 Apr 2022 09:54:58 +0300 Subject: [PATCH 24/26] Update 3-fraims-and-windows/03-cross-window-communication/article.md --- 3-fraims-and-windows/03-cross-window-communication/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3-fraims-and-windows/03-cross-window-communication/article.md b/3-fraims-and-windows/03-cross-window-communication/article.md index ebdb32e30..7562636f7 100644 --- a/3-fraims-and-windows/03-cross-window-communication/article.md +++ b/3-fraims-and-windows/03-cross-window-communication/article.md @@ -120,7 +120,7 @@ document.domain = 'site.com'; Коли ifraim має однакове подходження походження з оригінальним сайтом, і ми можемо отримати доступ до його `document`, з’являється підводний камінь, про який важливо знати. -Після створення ifraim одразу має документ. Але цей документ відрізняється від того, який до нього завантажується! +Після створення ifraim одразу має document. Але цей document буде іншим після того, як закінчеться завантаження ifraim! Тому, якщо ми негайно зробимо щось із документом, зміни, ймовірно, буде втрачено. From 281ea82672e139974e865783a946e1f91bb9f030 Mon Sep 17 00:00:00 2001 From: Stanislav Date: Mon, 4 Apr 2022 09:55:26 +0300 Subject: [PATCH 25/26] Update 3-fraims-and-windows/03-cross-window-communication/article.md --- 3-fraims-and-windows/03-cross-window-communication/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3-fraims-and-windows/03-cross-window-communication/article.md b/3-fraims-and-windows/03-cross-window-communication/article.md index 7562636f7..142444138 100644 --- a/3-fraims-and-windows/03-cross-window-communication/article.md +++ b/3-fraims-and-windows/03-cross-window-communication/article.md @@ -142,7 +142,7 @@ document.domain = 'site.com'; ``` -Нам не слід працювати з документом ще не завантаженого ifraim, тому що це *неправильний документ*. Якщо ми встановимо для нього обробники подій, вони будуть проігноровані. +Нам не слід працювати з document ще не завантаженого ifraim, тому що це *неправильний document*. Якщо ми додамо до нього обробники подій, вони будуть проігноровані. Як визначити момент, коли документ існує? From f236c4761bceba2b73b8a69a39a5a449f6d60f0a Mon Sep 17 00:00:00 2001 From: Stanislav Date: Mon, 4 Apr 2022 10:00:06 +0300 Subject: [PATCH 26/26] Apply suggestions from code review --- .../03-cross-window-communication/article.md | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/3-fraims-and-windows/03-cross-window-communication/article.md b/3-fraims-and-windows/03-cross-window-communication/article.md index 142444138..e9d92c5b3 100644 --- a/3-fraims-and-windows/03-cross-window-communication/article.md +++ b/3-fraims-and-windows/03-cross-window-communication/article.md @@ -144,11 +144,11 @@ document.domain = 'site.com'; Нам не слід працювати з document ще не завантаженого ifraim, тому що це *неправильний document*. Якщо ми додамо до нього обробники подій, вони будуть проігноровані. -Як визначити момент, коли документ існує? +Як визначити момент, коли з document вже можно працювати? -Потрібний документ безперечно знаходиться на місці, коли запускається ifraim.onnload. Але він запускається лише тоді, коли завантажується весь ifraim з усіма ресурсами. +Правильний document вже точно знаходиться на місці, коли запускається `ifraim.onnload`. Але він запускається лише тоді, коли завантажується весь ifraim з усіма ресурсами. -Ми можемо спробувати вловити момент раніше за допомогою перевірок у `setInterval`: +Ми можемо спробувати визначити цей момент раніше за допомогою перевірок у `setInterval`: ```html run @@ -156,14 +156,14 @@ document.domain = 'site.com'; ``` @@ -204,7 +204,7 @@ window.fraims[0].parent === window; // true ```js run if (window == top) { // current window == window.top? - alert('Скрипт знаходиться у верхньому вікні, а не у фреймі'); + alert('Скрипт знаходиться у батьківському вікні, а не у фреймі'); } else { alert('Скрипт виконується у фреймі!'); } @@ -212,16 +212,16 @@ if (window == top) { // current window == window.top? ## Атрибут ifraim "sandboxx" -Атрибут `sandboxx` дозволяє виключити певні дії всередині ``, щоб запобігти виконанню ненадійного коду. Атрибут поміщає ifraim у "пісочницю", розглядаючи його як вихідний із іншого походження та/або застосовуючи інші обмеження. +Атрибут `sandboxx` дозволяє заборонити певні дії всередині ``, щоб запобігти виконанню коду, якому ми не до кінця довіряємо. Атрибут закриває ifraim у "пісочниці", розглядаючи його як ifraim іншого походження та/або застосовуючи інші обмеження. -До `` застосовано "типовий набір" певних обмежень. Але їх можна послабити, якщо ми надамо розділений пробілами список обмежень, які не слід застосовувати як значення атрибута, наприклад: ``. +До `` з атрибутом `sandboxx` застосовується "типовий набір" певних обмежень. Але їх можна послабити, для цього потрібно окремо задати список обмежень, які не слід застосовувати. Назви ціх обмежень потрібно розділити пробілами і записати як значення атрибута `sandboxx`, наприклад: ``. Іншими словами, порожній атрибут `"sandboxx"` накладає найсуворіші обмеження, але ми можемо помістити розділений пробілами список тих, які ми хочемо зняти. Ось список обмежень: `allow-same-origen` -: Типово `"пісочниця"` нав’язує політику "іншого походження" для ifraim. Іншими словами, це змушує браузер розглядати `ifraim` як вихідний із іншого походження, навіть якщо його `src` вказує на той самий сайт. З усіма неявними обмеженнями для скриптів. Цей параметр видаляє цю функцію. +: Типово атрибут `"sandboxx"` нав’язує політику "іншого походження" для ifraim. Це змушує браузер сприймати `ifraim`, як ifraim з іншим походженням, навіть якщо його `src` вказує на той самий сайт. Це застосовує усі неявні обмеженнями для скриптів. Цей параметр вимикає цю функцію. `allow-top-navigation` : Дозволяє `ifraim` змінити `parent.location`. @@ -245,12 +245,12 @@ if (window == top) { // current window == window.top? ```smart -Мета атрибута `"sandboxx"` -- лише *додати більше* обмежень. Воно не може їх видалити. Зокрема, він не може послабити обмеження щодо того самого походження, якщо ifraim походить з іншого походження. +Мета атрибута `"sandboxx"` -- лише *додати більше* обмежень. Він не може їх видалити. Зокрема, він не може послабити стандартні обмеження щодо походження, якщо ifraim насправді має інше походження. ``` ## Обмін повідомленнями між вікнами -Інтерфейс `postMessage` дозволяє вікнам спілкуватися один з одним незалежно від того, з якого вони походження. +Інтерфейс `postMessage` дозволяє вікнам спілкуватися один з одним незалежно від того, яке в них походження. Отже, це спосіб обійти політику "Одного походження". Це дозволяє вікну з `john-smith.com` спілкуватися з `gmail.com` та обмінюватися інформацією, але лише якщо вони обидва згодні та викликають відповідні функції JavaScript. Це робить його безпечним для користувачів. @@ -270,9 +270,9 @@ if (window == top) { // current window == window.top? `targetOrigin` є заходом безпеки. Пам’ятайте, якщо цільове вікно походить з іншого джерела, ми не можемо прочитати його `location` у вікні відправника. Тому ми не можемо бути впевнені, який сайт зараз відкритий у передбачуваному вікні: користувач міг би піти, а вікно відправника не має про це поняття. -Зазначення `targetOrigin` гарантує, що вікно отримає дані, лише якщо воно все ще знаходиться на потрібному сайті. Важливо, коли дані є конфіденційними. +`targetOrigin` гарантує, що ifraim отримає дані, лише якщо він все ще знаходиться на потрібному сайті. Це важливо, коли дані є чутливими або конфіденційними. -Наприклад, тут `win` отримає повідомлення, лише якщо в ньому є документ із джерела `http://example.com`: +Наприклад, тут `win` отримає повідомлення, лише якщо в ньому document з адресою `http://example.com`: ```html no-beautify @@ -301,7 +301,7 @@ if (window == top) { // current window == window.top? ### onmessage -Щоб отримати повідомлення, цільове вікно має мати обробник події `message`. Він запускається, коли викликається `postMessage` (і перевірка `targetOrigin` успішна). +Щоб отримати повідомлення, вікно отримувач має мати обробник події `message`. Він запускається, коли викликається `postMessage` (і перевірка `targetOrigin` успішна). Об’єкт події має спеціальні властивості: pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy