Quero criar um link em uma página da Web que feche a guia atualmente ativa em um navegador sem fechar outras guias no navegador.
Quando o usuário clica no link fechar, uma mensagem de alerta deve aparecer pedindo ao usuário que confirme com dois botões, "SIM" e "NÃO". Se o usuário clicar em "SIM", feche essa página e, se "NÃO", não faça nada.
Como pode ser feito? Alguma sugestão?
javascript
html
hyperlink
Naveed
fonte
fonte
Respostas:
Você precisará de Javascript para fazer isso. Use
window.close()
:Nota: a guia atual está implícita. Isso é equivalente:
ou você pode especificar uma janela diferente.
Assim:
com HTML:
ou:
Vocês
return false
aqui para impedir o comportamento padrão do evento. Caso contrário, o navegador tentará acessar esse URL (o que obviamente não é).Agora, as opções na
window.confirm()
caixa de diálogo serão OK e Cancelar (não Sim e Não). Se você realmente deseja Sim e Não, precisará criar algum tipo de caixa de diálogo Javascript modal.Nota: existem diferenças específicas do navegador com as opções acima. Se você abriu a janela com Javascript (via
window.open()
), poderá fechar a janela com javascript. O Firefox não permite que você feche outras janelas. Acredito que o IE solicitará confirmação ao usuário. Outros navegadores podem variar.fonte
about:config
dom.allow_scripts_to_close_windows = true
pode ser a solução no Firefox (pode ser um grande risco à segurança!)<button type="button" onclick="window.open('', '_self', ''); window.close();">Discard</button>
consulte também este artigoTente isto
fonte
Este método funciona no Chrome e IE:
fonte
open(location, '_self').close();
Até onde eu sei, isso não é mais possível no Chrome ou no FireFox. Ainda pode ser possível no IE (pelo menos antes do Edge).
fonte
<button type="button" onclick="window.open('', '_self', ''); window.close();">Discard</button>
consulte também este artigoÉ possível. Eu procurei na net toda por isso, mas uma vez quando fiz uma das pesquisas da microsoft, finalmente consegui a resposta.
tente isto:
isso fechará a guia atual para você.
fonte
Testado com sucesso no FF 18 e no Chrome 24:
Inserir na cabeça:
HTML:
Os créditos vão para Marcos J. Drake .
fonte
Tente isso também. Trabalhando para mim nos três principais navegadores.
fonte
O seguinte funciona para mim no Chrome 41:
Eu tentei várias idéias para o FF, incluindo a abertura de uma página da Web real, mas nada parece funcionar. Tanto quanto eu entendo, qualquer navegador fechará uma guia ou janela com xxx.close () se ele realmente foi aberto pelo JS, mas o FF, pelo menos, não pode ser enganado para fechar uma guia abrindo novo conteúdo dentro dessa guia.
Isso faz sentido quando você pensa sobre isso - um usuário pode não querer que o JS feche uma guia ou janela que tenha histórico útil.
fonte
Desculpe por fazer isso, mas recentemente eu implementei um site hospedado localmente que precisava fechar a guia atual do navegador e encontrei algumas soluções interessantes que não estão bem documentadas em nenhum lugar que eu pudesse encontrar, então decidi fazer isso.
Nota: Essas soluções alternativas foram feitas com um site hospedado localmente e (com exceção do Edge) exigem que o navegador seja configurado especificamente, portanto, não seria ideal para sites hospedados publicamente.
Contexto: No passado, o script jQuery
window.close()
conseguia fechar a guia atual sem problemas na maioria dos navegadores. No entanto, navegadores modernos não suportam mais esse script, potencialmente por motivos de segurança.Google Chrome:
O Chrome não permite que o script window.close () seja executado e nada acontece se você tentar usá-lo. No entanto, usando o TamperMonkey do plug-in do Chrome, podemos usar o método window.close () se você incluir o
// @grant window.close
cabeçalho no UserScript do TamperMonkey.Por exemplo, meu script (que é acionado quando um botão com id = 'close_page' é clicado e se 'yes' for pressionado no pop-up do navegador) se parece com:
Nota: Esta solução só pode fechar a guia se NÃO for a última guia aberta no entanto. Tão eficazmente, ele não pode fechar a guia se fizer com que a janela seja fechada sendo a última guia aberta.
Raposa de fogo:
O Firefox possui uma configuração avançada que você pode ativar para permitir que os scripts fechem as janelas, ativando efetivamente o
window.close()
método. Para ativar essa configuração, vá para about: config , procure e encontre a preferência dom.allow_scripts_to_close_windows e mude de false para true.Isso permite que você use o
window.close()
método diretamente no seu arquivo jQuery, como faria com qualquer outro script.Por exemplo, este script funciona perfeitamente com a preferência definida como true:
Isso funciona muito melhor do que a solução alternativa do Chrome, pois permite que o usuário feche a guia atual, mesmo que seja a única guia aberta e não exija um plug-in de terceiros. A única desvantagem, no entanto, é que ele também permite que esse script seja executado por sites diferentes (não apenas aquele em que você pretende usá-lo); portanto, isso pode ser um risco à segurança, embora eu não possa imaginar que o fechamento da guia atual seja particularmente perigoso.
Beira:
De maneira decepcionante, o Edge realmente obteve o melhor dos três navegadores que experimentei e trabalhei com o
window.close()
método sem exigir nenhuma configuração. Quando owindow.close()
script é executado, um pop-up adicional alerta você que a página está tentando fechar a guia atual e pergunta se você deseja continuar.Nota final: As soluções para Chrome e Firefox são soluções alternativas para algo que os navegadores desabilitaram intencionalmente, potencialmente por razões de segurança. Ambos também exigem que o usuário configure seus navegadores para serem compatíveis com antecedência, portanto, provavelmente não seriam viáveis para sites destinados ao uso público, mas são ideais para soluções hospedadas localmente como a minha.
Espero que isso tenha ajudado! :)
fonte
Quanto às pessoas que ainda estão visitando esta página, você só pode fechar uma guia que é aberta por um script OU usando a tag anchor do HTML com o alvo _blank. Ambos podem ser fechados usando o
fonte
isso fez o trabalho para mim
fonte
um pouco tarde, mas foi isso que eu descobri ...
window.close()
funcionará apenas (o IE é uma exceção) se a janela que você está tentandoclose()
abrir foi aberta por um script usando o método window.open ().! (veja o comentário de @killstreet abaixo sobre a tag âncora com o alvo _blank)
TLDR : chrome e firefox permitem fechá-los.
você receberá um erro do console: Os scripts podem não fechar as janelas que não foram abertas pelo script. como um erro e nada mais.
você pode adicionar um parâmetro exclusivo no URL para saber se a página foi aberta a partir de um script (como a hora) - mas é apenas um hack e não uma funcionalidade nativa e falhará em alguns casos.
Não consegui encontrar nenhuma maneira de saber se a página foi aberta de um open () ou não, e close não lançará e erros. isso NÃO imprimirá "teste":
você pode ler no MDN mais sobre a função close ()
fonte
Veja como você criaria esse link:
<a href="javascript:if(confirm('Close window?'))window.close()">close</a>
fonte
Esta é uma maneira de resolver o mesmo, declarar uma função JavaScript como esta
Adicione a seguinte linha ao HTML para chamar a função usando um
<button>
fonte