JS метод Object.close()


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

Метод close() є ключовим елементом для управління вікнами у веб-браузерах. Цей метод дозволяє розробникам закривати вікно браузера або вкладку, яке було відкрите за допомогою методу window.open(). Основне його призначення - надання можливості програмному закриттю вікон, створених через JavaScript, що може бути корисно для реалізації інтерактивних інтерфейсів, таких як поп-апи, модальні вікна та інші вікна з динамічним вмістом.

Метод close() найчастіше використовується у сценаріях, де потрібно закрити вікно, яке було відкрите за допомогою window.open(). Це може бути корисним для:

  • Закриття вікон з додатковою інформацією або формами після виконання певних дій (наприклад, відправлення форми).
  • Автоматизації тестування веб-додатків, де потрібно відкривати та закривати вікна.

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

let newWindow = window.open("", "_blank"); // Відкриває нове вікно
// ... виконання певних дій у новому вікні ...
newWindow.close(); // Закриває відкрите вікно

Важливо відзначити, що браузери обмежують використання методу close() для запобігання його зловживанню. Зазвичай, метод close() дозволений тільки для вікон, які були відкриті скриптом. Це означає, що спроби закрити вкладку або вікно, відкрите користувачем безпосередньо (не через скрипт), зазвичай, ігноруються браузером.

Метод close() в JavaScript є потужним інструментом для контролю над вікнами в браузері. Однак, його використання вимагає розуміння обмежень, накладених браузерами, і можливих сценаріїв його застосування. Програмісти повинні застосовувати цей метод у відповідальний та обдуманий спосіб, враховуючи досвід користувача та аспекти безпеки.

автор: Bond

Порада

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

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

Початківцям слід пам'ятати, що використання close() може призвести до незавершеного діалогу з користувачем, якщо у вас є відкриті вікна або вкладки з непідтвердженими діями. Завжди спершу запитуйте в користувача підтвердження закриття.

if (confirm("Ви впевнені, що хочете закрити це вікно?")) {
 window.close(); // Закрити вікно після підтвердження
}
автор: Bond
Порада

Не всі браузери дозволяють програматично закривати вікна і вкладки за допомогою close(), і деякі можуть виводити попередження або блокувати цю дію. Пам'ятайте про це, і завжди тестуйте ваш код в різних браузерах, щоб бути впевненими в його сумісності.

Приклад перевірки на наявність методу close():

if (window.close) {
 window.close(); // Закрити вікно, якщо метод доступний
}
автор: Bond
Порада

close() також може бути використаний для закриття поточного вікна або вкладки, на якій ви виконуєте JavaScript. Це може бути корисно, наприклад, для створення кнопки "Закрити" в вашому веб-додатку.

Приклад використання close() для закриття поточного вікна після події кліку на кнопку:

const closeButton = document.getElementById("close-button");
closeButton.addEventListener("click", () => {
 window.close(); // Закрити поточне вікно після кліку на кнопку
});
автор: Bond

Синтаксис

close()

Переглядачі

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

Приклади

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

У цьому прикладі ми встановлюємо таймер за допомогою setTimeout(), який закриє поточне вікно браузера через 3 секунди після завантаження сторінки.

// У цьому прикладі ми закриваємо поточне вікно браузера через 3 секунди після завантаження сторінки.
setTimeout(() => {
  window.close();
}, 3000);
автор: Bond

Цей код створює кнопку, яка відкриває нове вікно браузера з Google і автоматично закриває його через 5 секунд. Якщо браузер блокує відкриття нового вікна, користувач отримає відповідне повідомлення.

автор: Bond

У цьому прикладі ми створюємо нове дочірнє вікно браузера за допомогою методу window.open(). Кнопка "Закрити вікно" дозволяє користувачу закривати дочірнє вікно за необхідності.

HTML

<button id="openButton">Відкрити вікно</button>
<button id="closeButton">Закрити вікно</button>

JS

let childWindow = null;

document.getElementById('openButton').addEventListener('click', () => {
    childWindow = window.open('', '_blank', 'width=400,height=300');

    if (!childWindow) {
        console.log('Браузер заблокував спливне вікно');
        return;
    }

    childWindow.document.write('<h1>Дочірнє вікно</h1>');
});

document.getElementById('closeButton').addEventListener('click', () => {
    if (childWindow && !childWindow.closed) {
        childWindow.close();
        console.log('Вікно закрито');
    } else {
        console.log('Вікно ще не відкрите');
    }
});
автор: Bond

Коментарі

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

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

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

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

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

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

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

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

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

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

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