JS властивість Object.frames


Загальний опис

Властивість frames в JavaScript є частиною глобального об'єкту Window і відіграє ключову роль у взаємодії з фреймами (рамками) на веб-сторінці. Ця властивість повертає об'єкт типу Window, який містить всі фрейми (як <iframe> так і <frame>) поточної сторінки. Її основне призначення - забезпечити доступ до контенту та методів кожного фрейму на сторінці, що важливо для складних веб-додатків, які використовують фрейми для відображення різних частин контенту або для вбудовування контенту з інших джерел.

Практичне застосування frames

Для базового використання, припустимо, що на вашій веб-сторінці є кілька фреймів. Використовуючи window.frames, ви можете отримати доступ до кожного з них. Наприклад, window.frames[0] дасть вам доступ до першого фрейму на сторінці. Це дуже корисно, коли вам потрібно читати або змінювати вміст фреймів, контролювати їх поведінку або навіть реагувати на події в межах фрейму.

Деталізація використання

  1. Доступ до фреймів: Ви можете доступатися до фреймів за індексом або ім'ям. Наприклад, якщо у вас є фрейм з ім'ям myFrame, ви можете отримати доступ до нього за допомогою window.frames['myFrame'].

  2. Читання та зміна контенту фрейму: Ви можете читати або змінювати вміст фрейму, доступившись до його властивостей та методів. Наприклад, window.frames[0].document.body.innerHTML повертає HTML вміст тіла першого фрейму.

  3. Взаємодія з фреймами: Ви можете викликати функції або змінювати властивості фреймів. Наприклад, window.frames[0].location.reload() перезавантажить перший фрейм.

Приклади коду

  1. Перебір фреймів: Якщо вам потрібно виконати дію для кожного фрейму, ви можете використовувати цикл:

    for (let i = 0; i < window.frames.length; i++) {
      console.log(window.frames[i].location.href);
    }
    

    Цей код виводить адресу кожного фрейму на консоль.

  2. Зміна вмісту фрейму: Щоб змінити вміст фрейму:

    window.frames['myFrame'].document.body.innerHTML = '<p>Новий контент</p>';
    

    Тут ми змінюємо HTML вміст фрейму myFrame.

автор: Bond

Порада

Використовуючи властивість frames, можна отримати доступ до конкретного фрейма за індексом. Це корисно, коли вам потрібно взаємодіяти з певним фреймом на сторінці. Наприклад, window.frames[0] дасть вам доступ до першого фрейма.

автор: Bond
Порада

Якщо вам потрібно виконати дії з кожним фреймом на сторінці, використовуйте цикл. Наприклад, for (let i = 0; i < window.frames.length; i++) { /* дії з window.frames[i] */ }. Це дозволяє застосувати одну й ту ж логіку до всіх фреймів.

автор: Bond
Порада

Ви можете динамічно змінювати вміст фрейму, використовуючи цю властивість. Наприклад, змінюючи src властивість фрейму, ви можете завантажити новий контент.

автор: Bond
Нотатка

Використання фреймів може бути складним з точки зору доступності та SEO, тому важливо розуміти потенційні наслідки їх застосування.

автор: Bond
Нотатка

При роботі з фреймами важливо пам'ятати про політику одного джерела (same-origin policy), яка обмежує доступ до фреймів з інших доменів. Спроба доступу до фрейма з іншого домену може викликати проблеми безпеки.

автор: Bond

Синтаксис

Window: frames property

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
1 1 1 ≤12.1 12 4
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
4.4 18 4 1
Підтримка: серверні переглядачі
Переглядач Deno

Приклади

+ запропонувати свій приклад у пісочниці

У цьому прикладі ми використовуємо властивість frames для отримання доступу до першого фрейму на сторінці (з індексом 0) і змінюємо його вміст, встановлюючи новий HTML.

HTML

<iframe srcdoc="Старий вміст" width="300" height="60" title="Демо-фрейм"></iframe>

JS

// window.frames[0] — перше вбудоване вікно (iframe)
var frame = window.frames[0];

// фрейм того самого походження — його документ доступний
frame.addEventListener('load', () => {});

setTimeout(() => {
    try {
        frame.document.body.innerHTML = 'Це новий вміст фрейму.';
        console.log('Вміст фрейму замінено');
    } catch (error) {
        console.log('Фрейм з іншого походження:', error.name);
    }
}, 300);
автор: Bond

У цьому прикладі ми використовуємо властивість frames для отримання кількості фреймів на сторінці та потім перебираємо їх у циклі, виводячи заголовок кожного фрейму. Таким чином, ми можемо взаємодіяти з усіма фреймами на сторінці за допомогою цієї властивості.

// Отримуємо кількість фреймів на сторінці
var frameCount = window.frames.length;

// Перебираємо всі фрейми і виводимо їх заголовки
for (var i = 0; i < frameCount; i++) {
    var frame = window.frames[i];
    var frameTitle = frame.document.title;
    console.log("Заголовок фрейму " + i + ": " + frameTitle);
}
автор: Bond

У цьому прикладі ми створили простий додаток, який дозволяє додавати нові фрейми на сторінку за допомогою кнопки "Додати фрейм". Фрейми додаються динамічно, і ви можете бачити їх зміну на сторінці при взаємодії з кнопкою. Таким чином, ви можете практично застосовувати властивість frames для роботи з фреймами на веб-сторінці.

автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід