Close: примеры (JAVASCRIPT)
close: undefinedОписание функции close
Метод close() в JavaScript используется для завершения работы различных объектов, таких как окна браузера или сетевые соединения. Он не является глобальной функцией, а вызывается как метод конкретного экземпляра объекта.
Чаще всего метод применяется в следующих сценариях:
- Закрытие всплывающего окна, созданного с помощью
window.open(). - Завершение соединения WebSocket.
- Остановка веб-воркера (Worker).
У метода может быть один необязательный аргумент:
- code (только для WebSocket) – числовой код статуса закрытия соединения. По умолчанию 1000 (нормальное закрытие).
- reason (только для WebSocket) – строка, описывающая причину закрытия.
Возвращаемое значение: undefined.
Примеры использования
Закрытие окна браузера:
let newWindow = window.open('', '_blank');
newWindow.close();// Всплывающее окно закрывается.
Закрытие WebSocket с параметрами:
const socket = new WebSocket('wss://example.com');
socket.close(1000, 'Работа завершена');// Соединение закрывается с кодом 1000 и указанной причиной.
Похожие функции в JavaScript
Worker.terminate() – немедленно останавливает веб-воркера. В отличие от close(), который отправляет сообщение о завершении, этот метод принудительно завершает поток.
AbortController.abort() – прерывает веб-запросы (fetch). Позволяет отменить HTTP-запрос, что не аналогично закрытию соединения, но решает задачу остановки операции.
XMLHttpRequest.abort() – останавливает текущий запрос. Используется для отмены асинхронных запросов.
Типичные ошибки
Попытка закрыть окно, не созданное скриптом:
window.close(); // Вызов в основном окне// В большинстве браузеров метод проигнорируется, окно не закроется.
Использование аргументов для window.close():
let win = window.open('', '_blank');
win.close(1000); // Аргументы не поддерживаются// Аргументы игнорируются, ошибки не возникает.
Закрытие уже закрытого WebSocket:
socket.close();
socket.close(); // Повторный вызов// Второй вызов не оказывает эффекта.
Изменения в последних версиях
Современные браузеры ужесточили политику безопасности для window.close(). Метод работает только для окон, открытых через window.open(). Автоматическое закрытие главного окна по инициативе скрипта обычно блокируется.
Для WebSocket добавлена поддержка кодов закрытия и причин в спецификации RFC 6455. Ранние реализации могли не поддерживать эти параметры.
Расширенные примеры
Проверка перед закрытием WebSocket:
if (socket.readyState === WebSocket.OPEN) {
socket.close(1000, 'Нормальное завершение');
} else {
console.log('Соединение уже закрыто или не открыто');
}// Соединение закрывается только если оно активно.
Закрытие окна с задержкой:
let win = window.open('', '_blank');
setTimeout(() => win.close(), 3000);// Окно закроется через 3 секунды.
Обработка события закрытия WebSocket:
socket.addEventListener('close', (event) => {
console.log(`Код: ${event.code}, Причина: ${event.reason}`);
});
socket.close(1001, 'Сервер завершил работу');// В консоль выводится информация о закрытии.
Закрытие всех окон, открытых скриптом:
let windows = [];
for (let i = 0; i < 3; i++) {
windows.push(window.open('', '_blank'));
}
windows.forEach(win => win.close());// Все три всплывающих окна закрываются.
Аналоги функции в других языках
PHP: fclose() – закрывает открытый файл.
$file = fopen('test.txt', 'r');
fclose($file);// Дескриптор файла освобождается.
Python: close() – метод файловых объектов и сокетов.
file = open('test.txt', 'r')
file.close()# Файл закрывается.
C: fclose() – закрывает поток файла.
FILE *file = fopen('test.txt', 'r');
fclose(file);// Поток файла закрывается.
MySQL: CLOSE – закрывает подготовленный оператор.
CLOSE cursor_name;-- Курсор освобождается.