Ce face window.open / window.close
window.open(url, "_blank") deschide adresa într-o filă nouă. Al treilea parametru (de exemplu "width=500,height=600") cere o fereastră separată, de tip pop-up. Browserele blochează ferestrele deschise fără o acțiune a utilizatorului, iar atunci metoda returnează null.
Rezultatul este un obiect fereastră; close() pe el închide fereastra. O pagină se poate închide singură cu window.close() doar dacă a fost deschisă din cod. Pentru siguranță, adaugă "noopener" când deschizi site-uri străine.
Parametri
| Parametru | Descriere |
|---|---|
url |
Adresa deschisă. |
tinta |
Opțional. "_blank" (filă nouă), "_self" sau un nume de fereastră. |
caracteristici |
Opțional. De exemplu "popup,width=500,height=600" sau "noopener". |
Ce returnează
Obiectul fereastră nou sau null (blocat sau cu noopener).
Exemple
Exemplul 1: O fereastră de autentificare
document.querySelector("#login-google").addEventListener("click", () => {
const popup = window.open("/auth/google", "autentificare", "popup,width=500,height=600");
if (!popup) {
console.log("pop-up blocat");
return;
}
setTimeout(() => {
popup.close();
console.log("închis:", popup.closed);
}, 60000);
});
Rezultat în browser
închis: true
Greșeli frecvente
- Deschizi fereastra în
setTimeoutsau după unawaitlung. Browserul nu o mai consideră urmarea unui clic și o blochează.
Comenzi înrudite
location.reload / assign / replace: Reîncarcă pagina sau navighează la altă adresă, cu sau fără păstrarea paginii curente în istoric.window.postMessage: Trimite mesaje în siguranță între ferestre sau iframe-uri de pe domenii diferite.addEventListener: Rulează o funcție când se întâmplă ceva pe pagină: un clic, o tastă, trimiterea unui formular.