Abrindo, Fechando e Posicionando Janelas - JavaScript
A linguagem JavaScript permite o controle programático das janelas do navegador web. Para isso, o objeto window
open()
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Programício</title>
</head>
<body>
<button onclick="openWindow()">Clique</button>
<script>
function openWindow() {
window.open("https://microsoft.com");
}
</script>
</body>
</html>
Neste exemplo, a função openWindow()
window.open()
O método open() aceita vários parâmetros:
open();
open(url);
open(url, target);
open(url, target, windowFeatures);
O primeiro parâmetro, url
target
: abre a página na aba atual._self
: aabre a página em uma nova aba ou janela separada._blank
Por exemplo, para abrir um endereço na mesma aba:
window.open("https://www.programicio.com", "_self");
O terceiro parâmetro permite definir um conjunto de características estilísticas da janela. Cada característica é definida como pares nome=valor, separados por vírgulas. Algumas das características incluem:
: indica se a página será aberta em uma janela popup separada. Por exemplo:popup
.popup=yes
: largura da janela em pixels. Por exemplo:width/innerWidth
.width=640
: altura da janela em pixels. Por exemplo:height/innerHeight
.height=480
: coordenada X relativa ao início da tela em pixels. Por exemplo:left/screenX
.left=0
: coordenada Y relativa ao início da tela em pixels. Por exemplo:top/screenY
.top=0
: indica se a barra de endereços será exibida. Por exemplo:location
.location=yes
: indica se a barra de menus será exibida. Por exemplo:menubar
.menubar=yes
: indica se a janela terá barras de rolagem. Por exemplo:scrollbars
.scrollbars=yes
: indica se a barra de status será exibida. Por exemplo:status
.status=yes
: indica se a barra de ferramentas será exibida. Por exemplo:toolbar
.toolbar=yes
Os últimos cinco parâmetros podem receber os valores yes
no
1
0
Exemplo de uso de vários parâmetros:
window.open("https://www.programicio.com", "_blank", "width=600,height=400,left=500,top=200");
É importante notar que a função retorna uma referência à janela, e com essa referência, podemos controlar a janela.
Também vale ressaltar que através da propriedade opener
Fechando Janelas
A janela pode ser fechada com o método close()
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Programício</title>
</head>
<body>
<button onclick="openWindow()">Abrir</button>
<button onclick="closeWindow()">Fechar</button>
<script>
let programicioWindow = null;
function openWindow() {
if (!programicioWindow || programicioWindow.closed) {
programicioWindow = window.open(
"https://www.programicio.com",
"_blank",
"width=600,height=400,left=500,top=200,popup=yes"
);
}
}
function closeWindow() {
programicioWindow?.close();
programicioWindow = null;
}
</script>
</body>
</html>
Dois botões são definidos para abrir e fechar a janela. A referência à própria janela é armazenada na variável programicioWindow
null
openWindow()
programicioWindow
null
programicioWindow.closed
Ao pressionar o segundo botão, o método close
programicioWindow
null
Controlando a Posição e o Tamanho da Janela
O objeto
: move a janela atual do navegador horizontal e verticalmente pela quantidade especificada de pixels. O primeiro parâmetro determina o movimento horizontal, o segundo parâmetro, o movimento vertical.moveBy()
: move a janela atual do navegador para a posição especificada. O primeiro parâmetro define a posição horizontal, o segundo parâmetro, a posição vertical.moveTo()
: redimensiona a janela atual do navegador horizontal e verticalmente pela quantidade especificada de pixels. O primeiro parâmetro determina o aumento horizontal, o segundo parâmetro, o aumento vertical.resizeBy()
: redimensiona a janela atual do navegador para as dimensões especificadas. O primeiro parâmetro define a largura, o segundo parâmetro, a altura.resizeTo()
: rola o conteúdo da janela até a posição especificada. O primeiro parâmetro indica a posição horizontal, o segundo parâmetro, a posição vertical.scroll()
: rola o conteúdo da janela pelo fator especificado. O primeiro parâmetro determina o fator de rolagem horizontal, o segundo parâmetro, o fator de rolagem vertical.scrollBy()
: rola o conteúdo da janela até a posição especificada. O primeiro parâmetro indica a posição horizontal, o segundo parâmetro, a posição vertical.scrollTo()
Exemplos de controle da posição e do tamanho da janela:
// Move a janela do navegador 200 pixels horizontalmente e 100 pixels verticalmente
window.moveBy(200, 100);
// Posiciona a janela do navegador na posição com coordenadas (200, 150)
window.moveTo(200, 150);
// Aumenta a janela do navegador 200 pixels na largura e 100 pixels na altura
window.resizeBy(200, 100);
// Reduz a janela do navegador 200 pixels na largura e 100 pixels na altura
window.resizeBy(-200, -100);
// Rola o conteúdo da janela 100 pixels horizontalmente e 200 pixels verticalmente
window.scrollBy(100, 200);
// Rola o conteúdo do navegador até a posição (100, 200)
window.scrollTo(100, 200);
No entanto, vale ressaltar que podem haver restrições de posicionamento e redimensionamento de janelas no nível do navegador, especialmente se as janelas carregarem recursos de diferentes domínios.
Exemplo de uso do método moveTo()
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Programício</title>
</head>
<body>
<button onclick="openWindow()">Abrir</button>
<button onclick="moveWindow()">Mover</button>
<script>
let testWindow = null;
// Abre a janela
function openWindow() {
testWindow = window.open("test.html", "_blank", "width=600,height=400,left=200,top=200");
}
// Move a janela
function moveWindow() {
testWindow.moveTo(500,400);
}
</script>
</body>
</html>